Files
OSIT-AE-API-FastAPI/app/routers/sql.py

47 lines
1.7 KiB
Python

import datetime
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging, common_route_params, Common_Route_Params
from app.config import settings
from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, redis_lookup_id_random
from app.models.response_models import Resp_Body_Base, mk_resp
from app.models.sql_request_models import SQL_Request_Base, SQL_Result_Base
router = APIRouter()
# ### BEGIN ### API SQL Anything ### get_sql_result() ###
# Updated 2022-05-23
@router.post('/sql/select', response_model=Resp_Body_Base)
async def select_result(
sql_request: SQL_Request_Base,
as_list: bool = False,
commons: Common_Route_Params = Depends(common_route_params),
):
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
sql = sql_request.sql_qry
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(sql)
data = sql_request.sql_data
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(data)
if sql_query_result := sql_select(data=data, sql=sql, as_list=as_list):
data = sql_query_result
status_code = 200
else:
data = None
status_code = 404
# log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(sql_query_result)
return mk_resp(data=data, status_code=status_code, response=commons.response)