From 71a2e4e54078155e0f3ea35a31b61fa715651334 Mon Sep 17 00:00:00 2001 From: Leopoldadmin Date: Tue, 9 Jun 2026 23:33:49 +0000 Subject: [PATCH] Add backend/app/routers/records.py --- backend/app/routers/records.py | 48 ++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 backend/app/routers/records.py diff --git a/backend/app/routers/records.py b/backend/app/routers/records.py new file mode 100644 index 0000000..e9fdb8d --- /dev/null +++ b/backend/app/routers/records.py @@ -0,0 +1,48 @@ +"""Record routes.""" +from fastapi import APIRouter, Depends, HTTPException +from sqlalchemy.orm import Session +from typing import List + +from app.database import get_db +from app.models.record import Record +from app.schemas.record import RecordCreate, RecordUpdate, RecordResponse + +router = APIRouter(prefix="/records", tags=["records"]) + +@router.get("/table/{table_id}", response_model=List[RecordResponse]) +def list_records(table_id: int, db: Session = Depends(get_db)): + """List all records for a table.""" + return db.query(Record).filter(Record.column_id.in_( + db.query(Column.id).filter(Column.table_id == table_id) + )).all() + +@router.post("", response_model=RecordResponse) +def create_record(record: RecordCreate, db: Session = Depends(get_db)): + """Create new record.""" + db_record = Record(**record.model_dump()) + db.add(db_record) + db.commit() + db.refresh(db_record) + return db_record + +@router.put("/{record_id}", response_model=RecordResponse) +def update_record(record_id: int, record: RecordUpdate, db: Session = Depends(get_db)): + """Update record.""" + db_record = db.query(Record).filter(Record.id == record_id).first() + if not db_record: + raise HTTPException(status_code=404, detail="Record not found") + for key, value in record.model_dump(exclude_unset=True).items(): + setattr(db_record, key, value) + db.commit() + db.refresh(db_record) + return db_record + +@router.delete("/{record_id}") +def delete_record(record_id: int, db: Session = Depends(get_db)): + """Delete record.""" + record = db.query(Record).filter(Record.id == record_id).first() + if not record: + raise HTTPException(status_code=404, detail="Record not found") + db.delete(record) + db.commit() + return {"message": "Record deleted"}