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 .api_crud import patch_obj_template 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