Working on all the routes, methods, and models.

This commit is contained in:
Scott Idem
2021-06-18 14:09:07 -04:00
parent bb2f14b67c
commit 938aabb2a8
29 changed files with 941 additions and 335 deletions

View File

@@ -5,11 +5,11 @@ from typing import Dict, List, Optional, Set, Union
from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator
from app.db_sql import redis_lookup_id_random
from app.lib_general import *
from app.lib_general import log, logging
from app.config import settings
from .common_field_schema import base_fields, default_num_bytes
from app.models.common_field_schema import base_fields, default_num_bytes
# ### BEGIN ### API Response Model ### Resp_Body_Base() ###
@@ -18,6 +18,10 @@ class Resp_Body_Base(BaseModel):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
test_prop: Optional[str] = Field(
alias='test_prop_alias'
)
data: Union[dict, list]
meta: Optional[dict]
# ### END ### API Response Model ### Resp_Body_Base() ###
@@ -26,26 +30,30 @@ class Resp_Body_Base(BaseModel):
# ### BEGIN ### API Response Model ### mk_resp() ###
# The make response function for REST - STI 2021-03-17
def mk_resp(
data:None|bool|dict|list,
dict_to_json:bool=False,
status_code:int=200,
status_message:str='',
status_name:str='',
success:bool=True,
details:str='',
by_alias:bool=True,
exclude_unset:bool=True,
response=None
data: None|bool|dict|list,
dict_to_json: bool = False,
status_code: int = 200,
status_message: str = '',
status_name: str = '',
success: bool = True,
details: str = '',
by_alias: bool = True,
exclude_unset: bool = True,
response = None
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if data is None: data = { 'result': data }
elif data == False: data = { 'result': data }
elif data == True: data = { 'result': data }
if data is None: data_out = { 'result': data }
elif data == False: data_out = { 'result': data }
elif data == True: data_out = { 'result': data }
elif isinstance(data, dict): data_out = data
else: # Assuming it is still and object. This should be improved. Example model type: "<class 'app.models.account_models.Account_Base'>"
data_out = data.dict(by_alias=by_alias, exclude_unset=exclude_unset)
log.debug(data_out)
resp_body = {}
resp_body['data'] = data
resp_body['data'] = data_out
resp_body['meta'] = {}
resp_body['meta']['details'] = details
resp_body['meta']['status_code'] = status_code
@@ -81,9 +89,14 @@ def mk_resp(
elif status_code == 503: response.status_code = status.HTTP_503_SERVICE_UNAVAILABLE
elif status_code == 504: response.status_code = status.HTTP_504_GATEWAY_TIMEOUT
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(type(resp_body['data']))
resp_body = Resp_Body_Base(**resp_body).dict(by_alias=by_alias, exclude_unset=exclude_unset)
resp_body_obj = Resp_Body_Base(**resp_body)
resp_body_obj.test_prop = 'my value'
log.debug(resp_body_obj)
resp_body_dict = resp_body_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset)
log.debug(resp_body_dict)
return resp_body
return resp_body_dict
# ### END ### API Response Model ### mk_resp() ###