|
|
|
from sqlalchemy.exc import SQLAlchemyError
|
|
from fastapi import HTTPException, status
|
|
from sqlalchemy import text
|
|
|
|
|
|
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:
|
|
|
|
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
|
|
) |