import datetime, pytz, time 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, 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_device_methods import get_event_device_rec_list, load_event_device_obj from app.models.common_field_schema import default_num_bytes from app.models.event_device_models import Event_Device_Base from app.models.response_models import Resp_Body_Base, mk_resp router = APIRouter() # ### BEGIN ### API Event Device ### get_event_device_obj() ### # Updated 2022-03-09 @router.get('/event/device/{event_device_id}', response_model=Resp_Body_Base) async def get_event_device_obj( event_device_id: str = Query(..., min_length=11, max_length=22), inc_event_cfg: bool = False, inc_event_location: bool = False, commons: Common_Route_Params = Depends(common_route_params), ): log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL log.debug(locals()) # ### SECTION ### Secondary data validation if event_device_id := redis_lookup_id_random(record_id_random=event_device_id, table_name='event_device'): pass else: return mk_resp(data=None, status_code=404, response=commons.response) if event_device_rec_result := load_event_device_obj( event_device_id = event_device_id, limit = commons.limit, enabled = commons.enabled, inc_event_cfg = inc_event_cfg, inc_event_location = inc_event_location, ): log.info('Loading successful. Returning result') return mk_resp(data=event_device_rec_result, response=commons.response) elif isinstance(event_device_rec_result, list) or event_device_rec_result is None: # Empty list or None log.info('No results') return mk_resp(data=None, status_code=404, response=commons.response) # Not Found else: log.warning('Likely bad request') return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request # ### END ### API Event Device ### get_event_device_obj() ### # ### BEGIN ### API Event Device ### get_event_obj_device_list() ### # Updated 2022-03-09 @router.get('/event/{event_id}/device/list', response_model=Resp_Body_Base) async def get_event_obj_device_list( event_id: str = Query(..., min_length=11, max_length=22), inc_event_cfg: bool = False, inc_event_location: bool = False, commons: Common_Route_Params = Depends(common_route_params), ): 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=commons.response) # Updated 2022-03-09 if event_device_rec_list_result := get_event_device_rec_list( for_type = 'event', for_id = event_id, enabled = commons.enabled, limit = commons.limit, offset = commons.offset, ): event_device_result_list = [] for event_device_rec in event_device_rec_list_result: if load_event_device_result := load_event_device_obj( event_device_id = event_device_rec.get('event_device_id', None), enabled = commons.enabled, inc_event_cfg = inc_event_cfg, inc_event_location = inc_event_location, ): event_device_result_list.append(load_event_device_result) else: event_device_result_list.append(None) response_data = event_device_result_list return mk_resp(data=response_data, response=commons.response) elif isinstance(event_device_rec_list_result, list) or event_device_rec_list_result is None: # Empty list or None log.info('No results') return mk_resp(data=None, status_code=404, response=commons.response) # Not Found else: log.warning('Likely bad request') return mk_resp(data=False, status_code=400, response=commons.response) # Bad Request # ### END ### API Event Device ### get_event_obj_device_list() ###