import datetime #from datetime import datetime, time, timedelta 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 ..lib_general import * from ..log import * from app.config import settings from app.db_sql import * from ..models.contact_model import Contact_Base from ..models.response_model import * router = APIRouter() # Working on the contact API CRUD - STI 2021-03-08 @router.post('') async def post_contact_obj(contact: Contact_Base, x_account_id: str = Header(...), return_obj: Optional[bool] = True, by_alias: Optional[bool] = True, exclude_unset: Optional[bool] = True, ): log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) table_name_insert = 'contact' obj_data_dict = contact.dict(by_alias=False, exclude_unset=True) log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(obj_data_dict) obj_data = lookup_id_random_pop(obj_data_dict) base_name = Contact_Base if sql_insert_result := sql_insert(table_name=table_name_insert, data=obj_data): log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(sql_insert_result) obj_id = sql_insert_result else: log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(sql_insert_result) return mk_resp(data=False, status_code=400) table_name_select = 'v_contact' sql_select_result = sql_select(table_name=table_name_select, record_id=obj_id) log.debug(sql_select_result) resp_data = base_name(**sql_select_result).dict(by_alias=by_alias, exclude_unset=exclude_unset) return mk_resp(data=resp_data) @router.patch('/{contact_id}') async def patch_contact_obj(contact_id: str, contact: Contact_Base, x_account_id: str = Header(...), return_obj: Optional[bool] = True, by_alias: Optional[bool] = True, exclude_unset: Optional[bool] = True, ): log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) table_name_update = 'contact' obj_id = contact_id # actually id_random obj_data_dict = contact.dict(by_alias=False, exclude_unset=True) obj_data_dict['id'] = redis_lookup_id_random(record_id_random=obj_id, table_name=table_name_update) obj_data_dict['id_random'] = obj_id result = patch_obj_template(table_name_update=table_name_update, data=obj_data_dict, obj_id=obj_id, return_obj=True, by_alias=True, exclude_unset=True ) return result table_name_update = 'contact' table_name_select = 'v_contact' obj_id = contact_id obj_data_dict = contact.dict(by_alias=False, exclude_unset=True) obj_data_dict['id'] = redis_lookup_id_random(record_id_random=obj_id, table_name=table_name_update) obj_data_dict['id_random'] = contact_id # NOTE: Adding this in so the id_random is NOT updated log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(obj_data_dict) obj_data = lookup_id_random_pop(obj_data_dict) base_name = Contact_Base if sql_update_result := sql_update(table_name=table_name_update, data=obj_data): log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(sql_update_result) #obj_id = sql_update_result obj_id = obj_data_dict['id'] else: log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(sql_update_result) return mk_resp(data=False, status_code=400) if sql_select_result := sql_select(table_name=table_name_select, record_id=obj_id): log.debug(sql_select_result) resp_data = base_name(**sql_select_result).dict(by_alias=by_alias, exclude_unset=exclude_unset) return mk_resp(data=resp_data) else: log.debug(sql_select_result) return mk_resp(data=False, status_code=404)