# --- Library Imports --- from sqlalchemy.exc import SQLAlchemyError from fastapi import HTTPException, status from sqlalchemy import text # --- User Imports --- from app.schema.response_schema import ResponseSchema class DocumentDropdownService: @staticmethod async def _fetch_data(query: str, success_message: str, db) -> dict: """ Fetch data from the database. Parameters: - query: SQL query string - success_message: Success message string - db: Database session Returns: - ResponseSchema: Response object containing fetched data """ try: # Execute the SQL query result = db.execute(text(query)) column_names = result.keys() data = [dict(zip(column_names, row)) for row in result.fetchall()] return ResponseSchema( status=200, message=success_message, success=True, data=data, ) except SQLAlchemyError as e: db.rollback() raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=str(e)) @staticmethod async def get_loanTypes(db): """ Fetch document status data. Parameters: - db: Database session Returns: - ResponseSchema: Response object containing document status data """ return await DocumentDropdownService._fetch_data( 'SELECT * FROM "DocumentStatuses";', "Document status fetched successfully!", db )