from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from app.common.db.session import get_db from app.common.responses.api_response import success_response from app.common.security.deps import require_admin_permission from app.modules.video_models.schema import BindingPayload, VideoModelPayload from app.modules.video_models.service import VideoModelsService router = APIRouter(tags=["video-models"]) @router.get("/api/v1/video-models") def list_public_video_models(db: Session = Depends(get_db)): return success_response(VideoModelsService(db).list_public_models()) @router.get("/api/v1/admin/video-models") def list_admin_video_models( _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(VideoModelsService(db).list_admin_models()) @router.post("/api/v1/admin/video-models") def create_video_model( payload: VideoModelPayload, _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(VideoModelsService(db).create_model(payload)) @router.put("/api/v1/admin/video-models/{model_id}") def update_video_model( model_id: int, payload: VideoModelPayload, _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(VideoModelsService(db).update_model(model_id, payload)) @router.get("/api/v1/admin/video-model-bindings") def list_bindings( _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(VideoModelsService(db).list_bindings()) @router.post("/api/v1/admin/video-model-bindings") def create_binding( payload: BindingPayload, _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(VideoModelsService(db).create_binding(payload)) @router.put("/api/v1/admin/video-model-bindings/{binding_id}") def update_binding( binding_id: int, payload: BindingPayload, _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(VideoModelsService(db).update_binding(binding_id, payload))