mirror of
https://github.com/TronoSfera/Law.git
synced 2026-05-18 18:13:46 +03:00
99 lines
2.5 KiB
Python
99 lines
2.5 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
from fastapi import APIRouter, Depends
|
|
from pydantic import BaseModel
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.core.deps import get_current_admin
|
|
from app.db.session import get_db
|
|
from app.schemas.universal import UniversalQuery
|
|
|
|
from .service import (
|
|
create_row_service,
|
|
delete_row_service,
|
|
get_row_service,
|
|
list_available_tables_service,
|
|
list_tables_meta_service,
|
|
query_table_service,
|
|
update_available_table_service,
|
|
update_row_service,
|
|
)
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
class TableAvailabilityUpdatePayload(BaseModel):
|
|
is_active: bool
|
|
|
|
|
|
@router.get("/meta/tables")
|
|
def list_tables_meta(db: Session = Depends(get_db), admin: dict = Depends(get_current_admin)):
|
|
return list_tables_meta_service(db, admin)
|
|
|
|
|
|
@router.get("/meta/available-tables")
|
|
def list_available_tables(db: Session = Depends(get_db), admin: dict = Depends(get_current_admin)):
|
|
return list_available_tables_service(db, admin)
|
|
|
|
|
|
@router.patch("/meta/available-tables/{table_name}")
|
|
def update_available_table(
|
|
table_name: str,
|
|
payload: TableAvailabilityUpdatePayload,
|
|
db: Session = Depends(get_db),
|
|
admin: dict = Depends(get_current_admin),
|
|
):
|
|
return update_available_table_service(table_name, payload.is_active, db, admin)
|
|
|
|
|
|
@router.post("/{table_name}/query")
|
|
def query_table(
|
|
table_name: str,
|
|
uq: UniversalQuery,
|
|
db: Session = Depends(get_db),
|
|
admin: dict = Depends(get_current_admin),
|
|
):
|
|
return query_table_service(table_name, uq, db, admin)
|
|
|
|
|
|
@router.get("/{table_name}/{row_id}")
|
|
def get_row(
|
|
table_name: str,
|
|
row_id: str,
|
|
db: Session = Depends(get_db),
|
|
admin: dict = Depends(get_current_admin),
|
|
):
|
|
return get_row_service(table_name, row_id, db, admin)
|
|
|
|
|
|
@router.post("/{table_name}", status_code=201)
|
|
def create_row(
|
|
table_name: str,
|
|
payload: dict[str, Any],
|
|
db: Session = Depends(get_db),
|
|
admin: dict = Depends(get_current_admin),
|
|
):
|
|
return create_row_service(table_name, payload, db, admin)
|
|
|
|
|
|
@router.patch("/{table_name}/{row_id}")
|
|
def update_row(
|
|
table_name: str,
|
|
row_id: str,
|
|
payload: dict[str, Any],
|
|
db: Session = Depends(get_db),
|
|
admin: dict = Depends(get_current_admin),
|
|
):
|
|
return update_row_service(table_name, row_id, payload, db, admin)
|
|
|
|
|
|
@router.delete("/{table_name}/{row_id}")
|
|
def delete_row(
|
|
table_name: str,
|
|
row_id: str,
|
|
db: Session = Depends(get_db),
|
|
admin: dict = Depends(get_current_admin),
|
|
):
|
|
return delete_row_service(table_name, row_id, db, admin)
|