Files
OSIT-AE-API-FastAPI/app/routers/archive_content.py
2021-11-02 18:26:16 -04:00

187 lines
6.8 KiB
Python

import datetime
#from datetime import datetime, time, timedelta
from fastapi import APIRouter, Body, Depends, Header, HTTPException, Query, Response, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
from app.lib_general import *
from ..log import *
from app.config import settings
from app.db_sql import *
from .api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template
from app.models.archive_content_models import Archive_Content_Base
from app.models.response_models import *
router = APIRouter()
@router.post('', response_model=Resp_Body_Base)
async def post_archive_content_obj(
obj: Archive_Content_Base,
x_account_id: str = Header(...),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
response: Response = Response,
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'archive_content'
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('/{obj_id}', response_model=Resp_Body_Base)
async def patch_archive_content_obj(
obj_id: str = Query(..., min_length=1, max_length=22),
obj: Archive_Content_Base = None,
x_account_id: Optional[str] = Header(..., ),
return_obj: Optional[bool] = True,
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
response: Response = Response,
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'archive_content'
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
@router.get('/list', response_model=Resp_Body_Base)
async def get_archive_content_obj_li(
for_obj_type: Optional[str] = Query(None, min_length=2, max_length=50),
for_obj_id: Optional[str] = Query(None, min_length=1, max_length=22),
x_account_id: str = Header(...),
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
response: Response = Response,
):
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'archive_content'
result = get_obj_li_template(
obj_type=obj_type,
for_obj_type=for_obj_type,
for_obj_id=for_obj_id,
by_alias=True,
exclude_unset=True,
)
return result
@router.get('/{obj_id}', response_model=Resp_Body_Base)
async def get_archive_content_obj(
obj_id: str = Query(..., min_length=1, max_length=22),
x_account_id: str = Header(...),
by_alias: Optional[bool] = True,
exclude_unset: Optional[bool] = True,
response: Response = Response,
):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
obj_type = 'archive_content'
result = get_obj_template(
obj_type=obj_type,
obj_id=obj_id,
by_alias=True,
exclude_unset=True,
)
return result
# @router.delete('/{obj_id}', response_model=Resp_Body_Base)
# async def delete_archive_content_obj(
# obj_id: str = Query(..., min_length=1, max_length=22),
# x_account_id: str = Header(...),
# response: Response = Response,
# ):
# log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
# log.debug(locals())
# obj_type = 'archive_content'
# result = delete_obj_template(
# obj_type=obj_type,
# obj_id=obj_id,
# )
# return result
# ### BEGIN ### API Archive Content ### delete_archive_content_obj() ###
# Updated 2021-11-02
@router.delete('/{archive_content_id}', response_model=Resp_Body_Base)
async def delete_archive_content_obj(
archive_content_id: str = Query(..., min_length=11, max_length=22),
# hosted_file_id: str = Query(..., min_length=11, max_length=22),
# for_type: str = Query(..., min_length=1, max_length=25),
# for_id: str = Query(..., min_length=11, max_length=22),
delete_hosted_file: bool = False,
x_account_id: str = Header(...),
response: Response = Response,
):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
if archive_content_id := redis_lookup_id_random(record_id_random=archive_content_id, table_name='archive_content'): pass
else: return mk_resp(data=None, status_code=404, response=response)
if archive_content_select_result := sql_select(table_name='archive_content', record_id=archive_content_id):
log.info(f'Selected Archive Content ID: {archive_content_id}')
log.debug(archive_content_select_result)
archive_content_rec = archive_content_select_result
else: return mk_resp(data=False, status_code=500, response=response) # Internal Server Error
if archive_content_delete_result := sql_delete(table_name='archive_content', record_id=archive_content_id):
log.info(f'Deleted Event File ID: {archive_content_id}')
else: return mk_resp(data=False, status_code=500, response=response) # Internal Server Error
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
hosted_file_id = archive_content_rec.get('hosted_file_id')
sql = f"""
DELETE FROM hosted_file_link
WHERE hosted_file_id = :hosted_file_id
AND link_to_type = :for_type
AND link_to_id = :for_id
"""
log.debug(sql)
hosted_file_link_data = {}
hosted_file_link_data['hosted_file_id'] = hosted_file_id
hosted_file_link_data['for_type'] = 'archive_content'
hosted_file_link_data['for_id'] = archive_content_id
log.debug(hosted_file_link_data)
if archive_content_delete_result := sql_delete(sql=sql, data=hosted_file_link_data):
log.info(f'Deleted Hosted File Link. Hosted File ID: {hosted_file_id}, Link To Type: archive_content, Link To ID: {archive_content_id}')
else: return mk_resp(data=False, status_code=500, response=response) # Internal Server Error
return mk_resp(data=True, response=response)
# ### END ### API Archive Content ### delete_archive_content_obj() ###