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() ###