Files
OSIT-AE-API-FastAPI/app/routers/log_client_viewing.py
2021-07-02 17:55:37 -04:00

132 lines
5.1 KiB
Python

import datetime, pytz, time
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Query, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import log, logging
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.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.methods.log_client_viewing_methods import get_log_client_viewing_rec_list, load_log_client_viewing_obj
from app.models.log_client_viewing_models import Log_Client_Viewing_Base
from app.models.response_models import Resp_Body_Base, mk_resp
router = APIRouter()
@router.post('/log/client_viewing', response_model=Resp_Body_Base)
async def post_log_client_viewing_obj(
obj: Log_Client_Viewing_Base,
x_account_id: str = Header(...),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'log_client_viewing'
obj_data_dict = obj.dict(by_alias=False, exclude_unset=True)
result = post_obj_template(
obj_type=obj_type,
data=obj_data_dict,
return_obj=True,
by_alias=True,
exclude_unset=True,
)
return result
@router.patch('/log/client_viewing/{obj_id}', response_model=Resp_Body_Base)
async def patch_log_client_viewing_obj(
obj: Log_Client_Viewing_Base,
obj_id: str = Query(..., min_length=1, max_length=22),
x_account_id: Optional[str] = Header(..., ),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'log_client_viewing'
obj_data_dict = obj.dict(by_alias=False, exclude_unset=True)
obj_data_dict['id'] = redis_lookup_id_random(record_id_random=obj_id, table_name=obj_type)
obj_data_dict['id_random'] = obj_id
result = patch_obj_template(
obj_type=obj_type,
data=obj_data_dict,
obj_id=obj_id,
return_obj=True,
by_alias=True,
exclude_unset=True,
)
return result
# ### BEGIN ### API Log Client Viewing Methods ### get_account_log_client_viewing_obj_li() ###
# Updated 2021-07-01
@router.get('/account/{account_id}/log/client_viewing/list', response_model=Resp_Body_Base)
async def get_account_log_client_viewing_obj_li(
account_id: str = Query(..., min_length=1, max_length=22),
enabled: str = 'enabled',
limit: int = 1000,
from_datetime: datetime.datetime = None,
to_datetime: datetime.datetime = None,
x_account_id: str = Header(...),
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if account_id := redis_lookup_id_random(record_id_random=account_id, table_name='account'): pass
else: return mk_resp(data=None, status_code=404)
# Updated 2021-07-02
if log_client_viewing_rec_list_result := get_log_client_viewing_rec_list(
account_id = account_id,
from_datetime = from_datetime,
to_datetime = to_datetime,
limit = limit,
enabled = enabled,
):
log_client_viewing_result_list = []
for log_client_viewing_rec in log_client_viewing_rec_list_result:
if load_log_client_viewing_result := load_log_client_viewing_obj(
log_client_viewing_id = log_client_viewing_rec.get('log_client_viewing_id', None),
limit = limit,
by_alias = by_alias,
exclude_unset = exclude_unset,
# model_as_dict = model_as_dict,
):
log_client_viewing_result_list.append(load_log_client_viewing_result)
else:
log_client_viewing_result_list.append(None)
response_data = log_client_viewing_result_list
else:
return mk_resp(data=False, status_code=400) # Bad Request
return mk_resp(data=response_data)
# ### END ### API Log Client Viewing Methods ### get_account_log_client_viewing_obj_li() ###
@router.delete('/log/client_viewing/{log_client_viewing_obj_id}', response_model=Resp_Body_Base)
async def delete_log_client_viewing_obj(
log_client_viewing_obj_id: str = Query(..., min_length=1, max_length=22),
x_account_id: str = Header(...),
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'log_client_viewing'
result = delete_obj_template(
obj_type=obj_type,
obj_id=log_client_viewing_obj_id,
)
return result