import datetime, json from fastapi import APIRouter, Body, Depends, Header, HTTPException, Path, Query, Response, status from pydantic import BaseModel, EmailStr, Field from typing import Dict, List, Optional, Set, Union from app.lib_general import log, logging, common_route_params, Common_Route_Params from app.config import settings from app.db_sql import sql_insert, sql_update, sql_insert_or_update, sql_select, sql_delete, get_id_random, redis_lookup_id_random from app.routers.api_crud import delete_obj_template, get_obj_template, get_obj_li_template, patch_obj_template, post_obj_template from app.methods.event_session_methods import create_event_session_obj, create_update_event_session_obj_v4, load_event_session_obj, get_event_session_rec_list, update_event_session_obj_v3, update_event_session_obj from app.models.event_session_models import Event_Session_Base from app.models.response_models import Resp_Body_Base, mk_resp router = APIRouter() # ### BEGIN ### API Event Session ### post_event_session_obj_new_v4() ### # Updated 2021-08-25 @router.post('/event/session/new_v4', response_model=Resp_Body_Base) async def post_event_session_obj_new_v4( event_session_obj: Event_Session_Base, create_sub_obj: bool = False, fail_any: bool = True, # Fail if any thing goes wrong for sub objects inc_event_presentation_list: bool = False, inc_event_presenter_list: bool = False, x_account_id: str = Header(...), return_obj: bool = True, limit: int = 500, enabled: str = 'enabled', by_alias: bool = True, exclude_unset: bool = True, response: Response = Response, ): log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) # There should probably be a check for the event ID before calling the create function? if create_event_session_obj_result := create_update_event_session_obj_v4( event_session_dict_obj = event_session_obj, event_id = event_session_obj.event_id, create_sub_obj = create_sub_obj, fail_any = fail_any, return_outline = False, ): pass else: return mk_resp(data=False, status_code=400, response=response, status_message='The event session was not created. Check the field names and data types.') if isinstance(create_event_session_obj_result, int): event_session_id = create_event_session_obj_result if return_obj: if load_event_session_obj_result := load_event_session_obj( event_session_id = event_session_id, inc_event_presentation_list = inc_event_presentation_list, inc_event_presenter_list = inc_event_presenter_list, ): data = load_event_session_obj_result else: data = False else: event_session_id = event_session_id event_session_id_random = get_id_random(record_id=event_session_id, table_name='event_session') data = {} data['event_session_id'] = event_session_id data['event_session_id_random'] = event_session_id_random return mk_resp(data=data, response=response, status_message='The event session was created.') else: return mk_resp(data=False, status_code=400, response=response, status_message='The result from trying to create an event session was unexpected.') # ### END ### API Event Session ### post_event_session_obj_new_v4() ### # ### BEGIN ### API Event Session ### patch_event_session_obj_exist_v4() ### # Updated 2021-08-25 @router.patch('/event/session/{event_session_id}/exist_v4', response_model=Resp_Body_Base) async def patch_event_session_obj_exist_v4( event_session_obj: Event_Session_Base, event_session_id: str = Path(min_length=11, max_length=22), create_sub_obj: bool = False, fail_any: bool = True, # Fail if any thing goes wrong for sub objects inc_event_presentation_list: bool = False, inc_event_presenter_list: bool = False, x_account_id: Optional[str] = Header(..., ), return_obj: Optional[bool] = True, by_alias: Optional[bool] = True, exclude_unset: Optional[bool] = True, exclude_none: Optional[bool] = True, response: Response = Response, ): log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if event_session_id := redis_lookup_id_random(record_id_random=event_session_id, table_name='event_session'): pass else: return mk_resp(data=None, status_code=404, response=response) if update_event_session_obj_result := create_update_event_session_obj_v4( event_session_dict_obj = event_session_obj, event_session_id = event_session_id, event_id = event_session_obj.event_id, create_sub_obj = create_sub_obj, fail_any = fail_any, return_outline = False, ): pass else: return mk_resp(data=False, status_code=400, response=response, status_message='The event session was not created. Check the field names and data types.') if update_event_session_obj_result: if return_obj: if load_event_session_obj_result := load_event_session_obj( event_session_id = event_session_id, inc_event_presentation_list = inc_event_presentation_list, inc_event_presenter_list = inc_event_presenter_list, ): data = load_event_session_obj_result else: data = False else: event_session_id_random = get_id_random(record_id=event_session_id, table_name='event_session') data = {} data['event_session_id'] = event_session_id data['event_session_id_random'] = event_session_id_random return mk_resp(data=data, response=response, status_message='The event session was created or updated.') else: return mk_resp(data=False, status_code=400, response=response, status_message='The result from trying to create an event session was unexpected.') # ### END ### API Event Session ### patch_event_session_obj_exist_v4() ### @router.post('/event/session', response_model=Resp_Body_Base) async def post_event_session_obj( obj: Event_Session_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.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) obj_type = 'event_session' 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 # ### BEGIN ### API Event Session ### post_event_session_obj_new_v3() ### # Updated 2021-08-21 (all new) @router.post('/event/session/new_v3', response_model=Resp_Body_Base) async def post_event_session_obj_new_v3( event_session_obj: Event_Session_Base, create_sub_obj: bool = False, fail_any: bool = True, # Fail if any thing goes wrong for sub objects x_account_id: str = Header(...), return_obj: bool = True, by_alias: bool = True, exclude_unset: bool = True, response: Response = Response, ): log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) # There should probably be a check for the event ID before calling the create function? if create_event_session_obj_result := create_event_session_obj( event_id = event_session_obj.event_id, event_session_obj_new = event_session_obj, create_sub_obj = create_sub_obj, fail_any = fail_any ): pass else: return mk_resp(data=False, status_code=400, response=response, status_message='The event session was not created. Check the field names and data types.') if isinstance(create_event_session_obj_result, int): event_session_id = create_event_session_obj_result if return_obj: if load_event_session_obj_result := load_event_session_obj(event_session_id=event_session_id): data = load_event_session_obj_result else: data = False else: event_session_id = create_event_session_obj_result event_session_id_random = get_id_random(record_id=event_session_id, table_name='event_session') data = {} data['event_session_id'] = event_session_id data['event_session_id_random'] = event_session_id_random return mk_resp(data=data, response=response, status_message='The event session was created.') else: return mk_resp(data=False, status_code=400, response=response, status_message='The result from trying to create an event session was unexpected.') # ### BEGIN ### API Event Session ### post_event_session_obj_new_v3() ### # ### BEGIN ### API Event Session ### patch_event_session_obj_exist_v3() ### # Updated 2021-08-24 @router.patch('/event/session/{event_session_id}/exist_v3', response_model=Resp_Body_Base) async def patch_event_session_obj_exist_v3( event_session_obj: Event_Session_Base, event_session_id: str = Path(min_length=11, max_length=22), create_sub_obj: bool = False, fail_any: bool = True, # Fail if any thing goes wrong for sub objects x_account_id: Optional[str] = Header(..., ), return_obj: Optional[bool] = True, by_alias: Optional[bool] = True, exclude_unset: Optional[bool] = True, exclude_none: Optional[bool] = True, response: Response = Response, ): log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if event_session_id := redis_lookup_id_random(record_id_random=event_session_id, table_name='event_session'): pass else: return mk_resp(data=None, status_code=404, response=response) if update_event_session_obj_result := update_event_session_obj_v3( event_session_id = event_session_id, event_session_obj_exist = event_session_obj, create_sub_obj = create_sub_obj, fail_any = fail_any, ): pass else: return mk_resp(data=False, status_code=400, response=response, status_message='The event session was not created. Check the field names and data types.') if update_event_session_obj_result: if return_obj: if load_event_session_obj_result := load_event_session_obj(event_session_id=event_session_id): data = load_event_session_obj_result else: data = False else: event_session_id_random = get_id_random(record_id=event_session_id, table_name='event_session') data = {} data['event_session_id'] = event_session_id data['event_session_id_random'] = event_session_id_random return mk_resp(data=data, response=response, status_message='The event session was created.') else: return mk_resp(data=False, status_code=400, response=response, status_message='The result from trying to create an event session was unexpected.') # ### END ### API Event Session ### patch_event_session_obj_exist_v3() ### @router.patch('/event/session/{obj_id}', response_model=Resp_Body_Base) async def patch_event_session_obj( obj: Event_Session_Base, obj_id: str = Path(min_length=11, max_length=22), 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.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) obj_type = 'event_session' obj_data_dict = obj.dict(by_alias=False, exclude_unset=True) log.debug(obj_data_dict) log.debug(type(obj_data_dict.get('proposal_json', None))) if 'proposal_json' in obj_data_dict and isinstance(obj_data_dict['proposal_json'], dict): log.debug('Need to convert to JSON string') obj_data_dict['proposal_json'] = json.dumps(obj_data_dict['proposal_json']) log.debug(obj_data_dict) 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 # ### BEGIN ### API Event Session ### patch_event_session_json() ### @router.patch('/event/session/{event_session_id}/json', response_model=Resp_Body_Base) async def patch_event_session_json( event_session_obj: Event_Session_Base, event_session_id: str = Path(min_length=11, max_length=22), create_sub_obj: bool = False, x_account_id: Optional[str] = Header(..., ), return_obj: Optional[bool] = True, by_alias: Optional[bool] = True, include: Optional[list] = [], exclude: Optional[list] = [], exclude_unset: Optional[bool] = True, exclude_none: Optional[bool] = True, response: Response = Response, ): log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if event_session_id := redis_lookup_id_random(record_id_random=event_session_id, table_name='event_session'): pass else: return mk_resp(data=None, status_code=404, response=response) if event_session_obj_up_result := update_event_session_obj( event_session_id = event_session_id, event_session_obj_up = event_session_obj, create_sub_obj = create_sub_obj, ): log.debug(event_session_obj_up_result) if return_obj: event_session_obj = load_event_session_obj(event_session_id=event_session_id) event_session_dict = event_session_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) return mk_resp(data=event_session_dict, response=response) else: return mk_resp(data=event_session_obj_up_result, response=response) else: return mk_resp(data=False, status_code=400, response=response) # Bad Request # ### END ### API Event Session ### patch_event_session_json() ### # @router.get('/list', response_model=Resp_Body_Base) # async def get_event_session_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 = 'event_session' # 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('/event/session/list', response_model=Resp_Body_Base) async def get_event_session_obj_li( for_obj_type: Optional[str] = Query(None, min_length=2, max_length=50), # account for_obj_id: Optional[str] = Query(None, min_length=1, max_length=22), enabled: str = 'enabled', # enabled, disabled, all from_datetime: Optional[datetime.datetime] = None, # based on start_datetime to_datetime: Optional[datetime.datetime] = None, # based on start_datetime limit: int = 500, inc_event_abstract_list: bool = False, inc_event_badge_list: bool = False, inc_event_device_list: bool = False, inc_event_file_list: bool = False, inc_event_location: bool = False, inc_event_person_list: bool = False, inc_event_presentation_list: bool = False, inc_event_presenter_list: bool = False, inc_event_registration_list: bool = False, inc_event_track: bool = False, inc_poc_event_person: bool = False, # inc_poc_person: bool = False, # inc_user: bool = False, x_account_id: str = Header(...), by_alias: bool = True, exclude_unset: bool = True, response: Response = Response, ): log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) data = {} if for_obj_type == 'account' and for_obj_id: data['account_id'] = redis_lookup_id_random(record_id_random=for_obj_id, table_name='account') sql_for_obj_type_id = f'`event`.account_id = :account_id' elif for_obj_type == 'event' and for_obj_id: data['event_id'] = redis_lookup_id_random(record_id_random=for_obj_id, table_name='event') sql_for_obj_type_id = f'`event_session`.event_id = :event_id' elif for_obj_type == 'event_location' and for_obj_id: data['event_location_id'] = redis_lookup_id_random(record_id_random=for_obj_id, table_name='event_location') sql_for_obj_type_id = f'`event_session`.event_location_id = :event_location_id' elif for_obj_type == 'event_track' and for_obj_id: data['event_track_id'] = redis_lookup_id_random(record_id_random=for_obj_id, table_name='event_track') sql_for_obj_type_id = f'`event_session`.event_track_id = :event_track_id' else: sql_for_obj_type_id = '' return mk_resp(data=False, status_code=400, response=response) if enabled in ['enabled', 'disabled', 'all']: if enabled == 'enabled': data['enable'] = True sql_enabled = f'AND `event_session`.enable = :enable' elif enabled == 'disabled': data['enable'] = False sql_enabled = f'AND `event_session`.enable = :enable' elif enabled == 'all': sql_enabled = '' else: return mk_resp(data=False, status_code=400, response=response) if from_datetime and to_datetime: data['from_datetime'] = from_datetime data['to_datetime'] = to_datetime sql_from_to_datetime = f'AND `event_session`.start_datetime >= :from_datetime AND `event_session`.start_datetime <= :to_datetime' elif from_datetime: data['from_datetime'] = from_datetime sql_from_to_datetime = f'AND `event_session`.start_datetime >= :from_datetime' elif to_datetime: data['to_datetime'] = to_datetime sql_from_to_datetime = f'AND `event_session`.start_datetime <= :to_datetime' else: sql_from_to_datetime = '' if limit: data['limit'] = limit sql_limit = f'LIMIT :limit' else: sql_limit = '' sql = f""" SELECT `event_session`.id AS 'event_session_id', `event_session`.id_random AS 'event_session_id_random' FROM `event_session` AS `event_session` WHERE {sql_for_obj_type_id} {sql_enabled} {sql_from_to_datetime} ORDER BY `event_session`.created_on DESC, `event_session`.updated_on DESC {sql_limit}; """ if event_session_li_result := sql_select(data=data, sql=sql, as_list=True): log.debug(event_session_li_result) event_session_li = [] for event_session in event_session_li_result: event_session_id = event_session.get('event_session_id', None) if event_session_obj := load_event_session_obj( event_session_id = event_session_id, enabled = enabled, inc_event_abstract_list = inc_event_abstract_list, inc_event_badge_list = inc_event_badge_list, inc_event_device_list = inc_event_device_list, inc_event_file_list = inc_event_file_list, inc_event_location = inc_event_location, inc_event_person_list = inc_event_person_list, inc_event_presentation_list = inc_event_presentation_list, inc_event_presenter_list = inc_event_presenter_list, inc_event_registration_list = inc_event_registration_list, inc_event_track = inc_event_track, inc_poc_event_person = inc_poc_event_person, # inc_poc_person = inc_poc_person, # inc_user = inc_user, ): data = event_session_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) event_session_li.append(data) return mk_resp(data=event_session_li, response=response) else: log.debug(event_session_li_result) return mk_resp(data=False, status_code=404, response=response) # ### BEGIN ### API Event Session ### get_event_session_obj() ### # Updated 2022-09-23 @router.get('/event/session/{event_session_id}', response_model=Resp_Body_Base) async def get_event_session_obj( event_session_id: str = Path(min_length=11, max_length=22), enabled: str = 'enabled', # For now this covers any included objects or object lists limit: int = 500, # For now this covers any included objects or object lists inc_address: bool = False, # Under contact inc_contact: bool = False, # Under person inc_event_abstract_list: bool = False, inc_event_badge_list: bool = False, inc_event_device_list: bool = False, inc_event_file_list: bool = False, inc_event_file_internal_use_list: bool = False, inc_event_location: bool = False, inc_event_location_list: bool = False, inc_event_person: bool = False, # Under event_presenter inc_event_person_profile: bool = False, # Under event_person inc_event_person_list: bool = False, inc_event_presentation_list: bool = False, inc_event_presenter_cat: bool = False, inc_event_presenter_list: bool = False, inc_event_registration_list: bool = False, inc_event_track: bool = False, inc_file_count: bool = False, # NOTE: file counts are from separate views inc_poc_event_person: bool = False, inc_person: bool = False, # Under event_person inc_user: bool = False, # Under event_person review: str = 'ready', # ready, not_ready, all approved: str = 'approved', # approved, not_approved, all hidden: str = 'not_hidden', # hidden, not_hidden, all x_account_id: str = Header(...), by_alias: Optional[bool] = True, exclude_unset: Optional[bool] = True, response: Response = Response, ): log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if event_session_id := redis_lookup_id_random(record_id_random=event_session_id, table_name='event_session'): pass else: return mk_resp(data=None, status_code=404, response=response) if event_session_obj := load_event_session_obj( event_session_id = event_session_id, enabled = enabled, # review = review, # approved = approved, hidden = hidden, inc_file_count = inc_file_count, limit = limit, inc_address = inc_address, inc_contact = inc_contact, inc_event_abstract_list = inc_event_abstract_list, inc_event_badge_list = inc_event_badge_list, inc_event_device_list = inc_event_device_list, inc_event_file_list = inc_event_file_list, inc_event_file_internal_use_list = inc_event_file_internal_use_list, inc_event_location = inc_event_location, inc_event_location_list = inc_event_location_list, inc_event_person = inc_event_person, inc_event_person_profile = inc_event_person_profile, inc_event_person_list = inc_event_person_list, inc_event_presentation_list = inc_event_presentation_list, inc_event_presenter_cat = inc_event_presenter_cat, inc_event_presenter_list = inc_event_presenter_list, inc_event_registration_list = inc_event_registration_list, inc_event_track = inc_event_track, inc_poc_event_person = inc_poc_event_person, inc_person = inc_person, inc_user = inc_user, ): event_session_dict = event_session_obj.dict(by_alias=by_alias, exclude_unset=exclude_unset) pass else: return mk_resp(data=False, status_code=400, response=response) # Bad Request return mk_resp(data=event_session_dict, response=response) #return mk_resp(data=event_session_obj) # ### END ### API Event Session ### get_event_session_obj() ### # ### BEGIN ### API Event Session ### get_event_event_session_obj_li() ### # Updated 2022-09-30 @router.get('/event/{event_id}/event/session/list', response_model=Resp_Body_Base) async def get_event_event_session_obj_li( event_id: str = Path(min_length=11, max_length=22), enabled: str = 'enabled', # enabled, disabled, all limit: int = 500, # For now this covers any included objects or object lists # inc_address: bool = False, # inc_contact: bool = False, inc_event_file_list: bool = False, inc_event_file_internal_use_list: bool = False, inc_event_presentation_list: bool = False, inc_event_presenter_cat: bool = False, inc_event_presenter_list: bool = False, inc_event_person: bool = False, # Intended for event_presenter # inc_event_person_list: bool = False, inc_file_count: bool = False, # NOTE: file counts are from separate views inc_person: bool = False, # Intended for event_presenter > event_person inc_poc_event_person: bool = False, review: str = 'all', # ready, not_ready, all approved: str = 'all', # approved, not_approved, all hidden: str = 'not_hidden', # hidden, not_hidden, all x_account_id: str = Header(...), by_alias: Optional[bool] = True, exclude_unset: Optional[bool] = True, response: Response = Response, ): log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) if event_id := redis_lookup_id_random(record_id_random=event_id, table_name='event'): pass else: return mk_resp(data=None, status_code=404, response=response) # Updated 2021-12-13 if event_session_rec_list_result := get_event_session_rec_list( event_id = event_id, review = review, # ready, not_ready, all approved = approved, # approve(d), not_approved, all hidden = hidden, # hidden, not_hidden, all enabled = enabled, limit = limit, ): event_session_result_list = [] for event_session_rec in event_session_rec_list_result: if load_event_session_result := load_event_session_obj( event_session_id = event_session_rec.get('event_session_id', None), enabled = enabled, # review = review, # approved = approved, hidden = hidden, inc_file_count = inc_file_count, limit = limit, inc_event_file_list = inc_event_file_list, inc_event_file_internal_use_list = inc_event_file_internal_use_list, inc_event_presentation_list = inc_event_presentation_list, inc_event_presenter_cat = inc_event_presenter_cat, inc_event_presenter_list = inc_event_presenter_list, inc_person = inc_person, inc_poc_event_person = inc_poc_event_person, ): event_session_result_list.append(load_event_session_result) else: event_session_result_list.append(None) response_data = event_session_result_list elif isinstance(event_session_rec_list_result, list) or event_session_rec_list_result is None: # Empty list or None log.info('No results') return mk_resp(data=False, status_code=404, response=response) # Not Found else: log.warning('Likely bad request') return mk_resp(data=False, status_code=400, response=response) # Bad Request return mk_resp(data=response_data, response=response) # ### END ### API Event Session ### get_event_event_session_obj_li() ### # ### BEGIN ### API Event Session ### search_event_session_obj_li() ### # Updated 2021-09-21 @router.get('/event/{event_id}/session/search', response_model=Resp_Body_Base) async def search_event_session_obj_li( event_id: str = Path(min_length=11, max_length=22), event_session_id: str = Query('%', max_length=22), event_session_code: str = Query('%', max_length=50), event_session_name: str = Query('%', max_length=50), limit: int = 50, enabled: str = 'enabled', x_account_id: str = Header(...), by_alias: bool = True, exclude_unset: bool = True, response: Response = Response, ): log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) data = {} data['account_id_random'] = x_account_id data['event_id_random'] = event_id data['event_session_id'] = '%'+event_session_id+'%' data['event_session_code'] = '%'+event_session_code+'%' data['event_session_name'] = '%'+event_session_name+'%' # Adding the % symbol here because it turns certain combinations into special characters # data['from_datetime'] = from_datetime # data['to_datetime'] = to_datetime log.debug(data) if enabled in ['enabled', 'disabled', 'all']: if enabled == 'enabled': data['enable'] = True sql_enabled = f'AND `event_session`.enable = :enable' elif enabled == 'disabled': data['enable'] = False sql_enabled = f'AND `event_session`.enable = :enable' elif enabled == 'all': sql_enabled = '' if limit: data['limit'] = limit sql_limit = f'LIMIT :limit' else: sql_limit = '' sql = f""" SELECT * FROM `v_event_session` AS event_session WHERE event_session.account_id = :account_id AND event_session.event_id = :event_id AND (event_session.event_session_code LIKE :event_session_code OR event_session.event_session_code IS NULL) AND event_session.name LIKE :event_session_name {sql_enabled} ORDER BY event_session.start_datetime ASC, event_session.name ASC, event_session.created_on DESC, event_session.updated_on DESC {sql_limit}; """ log.debug(sql) if sql_result := sql_select(data=data, sql=sql, as_list=True, rm_id_random=True): resp_data_li = [] for record in sql_result: resp_data = Event_Session_Base(**record).dict(by_alias=by_alias, exclude_unset=exclude_unset) resp_data_li.append(resp_data) return mk_resp(data=resp_data_li, response=response) else: log.debug(sql_result) return mk_resp(data=False, status_code=404, response=response) # ### END ### API Event Session ### search_event_session_obj_li() ### @router.delete('/event/session/{obj_id}', response_model=Resp_Body_Base) async def delete_event_session_obj( obj_id: str = Path(min_length=11, max_length=22), x_account_id: str = Header(...), response: Response = Response, ): log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) obj_type = 'event_session' result = delete_obj_template( obj_type=obj_type, obj_id=obj_id, ) return result