mirror of
https://github.com/creyD/apilog.git
synced 2026-04-14 12:20:31 +02:00
feat: added logging API
This commit is contained in:
65
app/routes/entry.py
Normal file
65
app/routes/entry.py
Normal file
@@ -0,0 +1,65 @@
|
||||
from creyPY.fastapi.crud import (
|
||||
create_obj_from_data,
|
||||
)
|
||||
from creyPY.fastapi.db.session import get_db
|
||||
from fastapi import APIRouter, Depends, Security, HTTPException
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.services.auth import verify
|
||||
from app.schema.entry import LogIN, LogOUT
|
||||
from app.models.entry import LogEntry
|
||||
from fastapi_pagination.ext.sqlalchemy import paginate
|
||||
from creyPY.fastapi.pagination import Page
|
||||
from uuid import UUID
|
||||
|
||||
router = APIRouter(prefix="/log", tags=["logging"])
|
||||
|
||||
|
||||
@router.post("/", status_code=201)
|
||||
async def create_log(
|
||||
data: LogIN,
|
||||
sub: str = Security(verify),
|
||||
db: Session = Depends(get_db),
|
||||
) -> LogOUT:
|
||||
obj = create_obj_from_data(
|
||||
data,
|
||||
LogEntry,
|
||||
db,
|
||||
additonal_data={"created_by_id": sub},
|
||||
)
|
||||
return LogOUT.model_validate(obj)
|
||||
|
||||
|
||||
@router.delete("/{log_id}", status_code=204)
|
||||
async def delete_log(
|
||||
log_id: UUID,
|
||||
sub: str = Security(verify),
|
||||
db: Session = Depends(get_db),
|
||||
) -> None:
|
||||
obj = db.query(LogEntry).filter_by(id=log_id, created_by_id=sub).one_or_none()
|
||||
if obj is None:
|
||||
raise HTTPException(status_code=404, detail="Item not found")
|
||||
db.delete(obj)
|
||||
db.commit()
|
||||
return None
|
||||
|
||||
|
||||
@router.get("/{log_id}")
|
||||
async def get_log(
|
||||
log_id: UUID,
|
||||
sub: str = Security(verify),
|
||||
db: Session = Depends(get_db),
|
||||
) -> LogOUT:
|
||||
obj = db.query(LogEntry).filter_by(id=log_id, created_by_id=sub).one_or_none()
|
||||
if obj is None:
|
||||
raise HTTPException(status_code=404, detail="Item not found")
|
||||
return LogOUT.model_validate(obj)
|
||||
|
||||
|
||||
@router.get("/")
|
||||
async def get_logs(
|
||||
sub: str = Security(verify),
|
||||
db: Session = Depends(get_db),
|
||||
) -> Page[LogOUT]:
|
||||
the_select = db.query(LogEntry).filter_by(created_by_id=sub)
|
||||
return paginate(the_select)
|
||||
Reference in New Issue
Block a user