import datetime, pytz, time #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 log, logging #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.methods.person_methods import load_person_obj from app.methods.user_methods import load_user_obj from app.models.common_field_schema import default_num_bytes from app.models.person_models import Person_Base from app.models.response_models import * from app.models.user_models import User_Base, User_New_Base, User_Out_Base router = APIRouter() # Look up a user and person with an email address for a client account @router.get('/lookup_email', response_model=Resp_Body_Base) async def lookup_email( account_id: Union[int,str], email: str = Query(..., min_length=2, max_length=50), x_account_id: str = Header(...), inc_roles: bool = False, inc_contact: bool = False, inc_organization: bool = False, inc_person: bool = False, inc_user: bool = False, by_alias: bool = True, exclude_unset: bool = True, response: Response = Response, ): log.setLevel(logging.DEBUG) # 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=False, status_code=404, response=response) # Not Found log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL data = {} data['account_id'] = account_id data['email'] = email log.debug(data) sql = f""" SELECT DISTINCT account_id_random, user_id_random, person_id_random, contact_id_random, contact_address_id_random, user_username, user_name, user_email, person_given_name, person_family_name, person_full_name, contact_email FROM (SELECT account_id_random, user_id_random, person_id_random, contact_id_random, contact_address_id_random, user_username, user_name, user_email, person_given_name, person_family_name, person_full_name, contact_email FROM v_link_user_person WHERE v_link_user_person.account_id = :account_id AND v_link_user_person.user_email = :email UNION SELECT account_id_random, user_id_random, person_id_random, contact_id_random, contact_address_id_random, user_username, user_name, user_email, person_given_name, person_family_name, person_full_name, contact_email FROM v_link_person_user WHERE v_link_person_user.account_id = :account_id AND v_link_person_user.contact_email = :email) AS user_person_union """ log.debug(sql) user_person_obj_li_result = sql_select(data=data, sql=sql, as_list=True) data = user_person_obj_li_result return mk_resp(data=data)