Feat: Implement token tracking, soft delete, and Admin UI improvements
This commit is contained in:
@@ -26,6 +26,9 @@ class ModuleResponse(BaseModel):
|
||||
is_active: bool
|
||||
created_at: datetime
|
||||
last_rotated_at: datetime
|
||||
ingress_tokens: int
|
||||
egress_tokens: int
|
||||
total_tokens: int
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
@@ -55,10 +58,14 @@ def create_module(
|
||||
|
||||
@router.get("/modules", response_model=List[ModuleResponse])
|
||||
def get_modules(
|
||||
include_archived: bool = False,
|
||||
db: Session = Depends(get_db),
|
||||
current_user: str = Depends(get_current_user)
|
||||
):
|
||||
return db.query(Module).all()
|
||||
query = db.query(Module)
|
||||
if not include_archived:
|
||||
query = query.filter(Module.is_active == True)
|
||||
return query.all()
|
||||
|
||||
@router.post("/modules/{module_id}/rotate", response_model=ModuleResponse)
|
||||
def rotate_module_key(
|
||||
@@ -79,12 +86,35 @@ def rotate_module_key(
|
||||
@router.delete("/modules/{module_id}")
|
||||
def delete_module(
|
||||
module_id: int,
|
||||
hard_delete: bool = False,
|
||||
db: Session = Depends(get_db),
|
||||
current_user: str = Depends(get_current_user)
|
||||
):
|
||||
db_module = db.query(Module).filter(Module.id == module_id).first()
|
||||
if not db_module:
|
||||
raise HTTPException(status_code=404, detail="Module not found")
|
||||
db.delete(db_module)
|
||||
|
||||
if hard_delete:
|
||||
db.delete(db_module)
|
||||
message = "Module permanently deleted"
|
||||
else:
|
||||
db_module.is_active = False
|
||||
message = "Module archived"
|
||||
|
||||
db.commit()
|
||||
return {"status": "success"}
|
||||
return {"status": "success", "message": message}
|
||||
|
||||
@router.post("/modules/{module_id}/restore", response_model=ModuleResponse)
|
||||
def restore_module(
|
||||
module_id: int,
|
||||
db: Session = Depends(get_db),
|
||||
current_user: str = Depends(get_current_user)
|
||||
):
|
||||
db_module = db.query(Module).filter(Module.id == module_id).first()
|
||||
if not db_module:
|
||||
raise HTTPException(status_code=404, detail="Module not found")
|
||||
|
||||
db_module.is_active = True
|
||||
db.commit()
|
||||
db.refresh(db_module)
|
||||
return db_module
|
||||
|
||||
Reference in New Issue
Block a user