33 lines
1.4 KiB
Python
33 lines
1.4 KiB
Python
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
|