from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from datetime import datetime, timezone from .. import models, schemas, database from ..security import require_roles zametki = APIRouter(prefix="/zametki", tags=["zametki"]) @zametki.post("/", response_model=schemas.ZametkaRead, dependencies=[Depends(require_roles(["admin", "editor"]))]) def create_zametka(item: schemas.ZametkaCreate, db: Session = Depends(database.get_db)): obj = models.Zametki(txtzam=item.txtzam, created_date=datetime.now(timezone.utc)) db.add(obj) db.commit() db.refresh(obj) return obj @zametki.get("/", response_model=list[schemas.ZametkaRead]) def list_zametki(active_only: bool = True, db: Session = Depends(database.get_db)): query = db.query(models.Zametki) if active_only: query = query.filter(models.Zametki.rmdt == None) return query.order_by(models.Zametki.created_date.desc()).all() @zametki.patch("/{zametka_id}/resolve", response_model=schemas.ZametkaRead, dependencies=[Depends(require_roles(["admin", "editor"]))]) def resolve_zametka(zametka_id: int, db: Session = Depends(database.get_db)): obj = db.query(models.Zametki).filter(models.Zametki.id == zametka_id).first() if not obj: raise HTTPException(status_code=404, detail="Zametka not found") obj.rmdt = datetime.now(timezone.utc) db.commit() db.refresh(obj) return obj