def bootstrap_app(): app = FastAPI(title="automated terrarium dashboard API", openapi_prefix=API_PREFIX) app.add_event_handler("startup", startup_handler) app.include_router(temperature.router, prefix="/sensor") app.include_router(humidity.router, prefix="/sensor") app.include_router(device.router, prefix="/device") app.include_router(sensor.router, prefix="/sensors") app.include_router(door.router, prefix="/sensor") app.include_router(relay.router, prefix="/relay") app.include_router(settings.router, prefix="/settings") session = base.session_factory(True) startup.migrate(session) if __debug__: from starlette.middleware.cors import CORSMiddleware app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) return app
def get_temperature(close_session=True, last=False, session=None): if session is None: session = session_factory() try: if last: temperature = select_newest_from_db(Temperature, False, session) response = pydantication.create_pydantic_object( temperature, TemperatureResponse) if close_session: session.close() return response else: list_temperature = [] temperature = select_all_from_db(Temperature, False, session) if close_session: session.close() for obj in temperature: response = pydantication.create_pydantic_object( obj, TemperatureResponse) list_temperature.append(response) return list_temperature except Exception: raise ConnectionError
def get_setting_by_id(setting_id, close_session=True, session=None): if session is None: session = session_factory() setting = select_query_from_db(Settings, False, session).filter(Settings.id == setting_id) if close_session: session.close() return setting
def edit_settings(setting_id, req, session=None): try: if session is None: session = session_factory() setting = get_setting_by_id(setting_id, False, session).first() db = pydantication.create_db_object(req, Settings).__dict__ update_row(setting, db, True, session) except Exception: raise ConnectionError
def delete_sensor(sensor_id, close_session=True, session=None): if session is None: session = session_factory() try: sensors = select_query_from_db(Sensor, False, session).filter(getattr(Sensor, 'id') == sensor_id).first() delete_from_db(sensors, True, session) if close_session: session.close() return except: raise ConnectionError
def get_all_sensors(close_session=True, session=None): if session is None: session = session_factory() try: list_sensors = [] sensors = select_all_from_db(Sensor, False, session) if close_session: session.close() for obj in sensors: response = pydantication.create_pydantic_object(obj, SersorRequest) list_sensors.append(response) return list_sensors except Exception: raise ConnectionError
def get_sensors_by_attribute(attr, value, close_session=True, session=None): if session is None: session = session_factory() try: list_sensors = [] sensors = select_query_from_db(Sensor, False, session).filter(getattr(Sensor, attr) == value) if close_session: session.close() for obj in sensors: response = pydantication.create_pydantic_object(obj, SersorRequest) list_sensors.append(response) return list_sensors except Exception: raise ConnectionError
def get_devices(close_session=True, session=None): if session is None: session = session_factory() try: device_list = [] device = select_all_from_db(DeviceDB, False, session) if close_session: session.close() for obj in device: response = pydantication.create_pydantic_object( obj, Device_request) device_list.append(response) except Exception: raise ConnectionError return device_list
def get_device_by_id(dev_id, close_session=True, session=None): if session is None: session = session_factory() try: device = select_query_from_db(DeviceDB, False, session).filter(DeviceDB.id == dev_id) if close_session: session.close() if not device: return [] for obj in device: response = pydantication.create_pydantic_object( obj, Device_request) return response except Exception: raise ConnectionError
def get_settings_by_type(sensors=[], close_session=True, session=None): if session is None: session = session_factory() attr = 'sensor_id' try: list_sensors = [] for sensor in sensors: list_sensors.append(sensor.id) list_settings = [] settings = select_query_from_db(Settings, False, session).filter( Settings.sensor_id.in_(list_sensors)) if close_session: session.close() for obj in settings: response = pydantication.edit_db_object(obj, SettingsRequest) list_settings.append(response) return list_settings except Exception: raise ConnectionError
def get_door_start_end_date(start, end, close_session=True, session=None): if session is None: session = session_factory() attr = 'last_update' try: list_door = [] door = select_query_from_db(Door, False, session).filter( getattr(Door, attr) <= end, getattr(Door, attr) >= start) if close_session: session.close() if not door: return [] for obj in door: response = pydantication.create_pydantic_object(obj, DoorResponse) list_door.append(response) return list_door except Exception: raise ConnectionError
def get_humidity_start_end_date(start, end, close_session=True, session=None): if session is None: session = session_factory() attr = 'last_update' try: list_humidity = [] humidity = select_query_from_db(Humidity, False, session).filter( getattr(Humidity, attr) <= end, getattr(Humidity, attr) >= start) if close_session: session.close() if not humidity: return [] for obj in humidity: response = pydantication.create_pydantic_object( obj, HumidityResponse) list_humidity.append(response) return list_humidity except Exception: raise ConnectionError
def get_door(close_session=True, last=False, session=None): if session is None: session = session_factory() try: if last: door = select_newest_from_db(Door, False, session) response = pydantication.create_pydantic_object(door, DoorResponse) if close_session: session.close() return response else: list_door = [] door = select_all_from_db(Door, False, session) if close_session: session.close() for obj in door: response = pydantication.create_pydantic_object(obj, DoorResponse) list_door.append(response) return list_door except Exception: raise ConnectionError
def get_temperature_start_end_date(start, end, close_session=True, session=None): if session is None: session = session_factory() attr = 'last_update' try: list_temperature = [] temperature = select_query_from_db(Temperature, False, session).filter( getattr(Temperature, attr) <= end, getattr(Temperature, attr) >= start) if close_session: session.close() if not temperature: return [] for obj in temperature: response = pydantication.create_pydantic_object( obj, TemperatureResponse) list_temperature.append(response) return list_temperature except Exception: raise ConnectionError
def get_humidity(close_session=True, last=False, session=None): if session is None: session = session_factory() try: if last: humidity = select_newest_from_db(Humidity, False, session) response = pydantication.create_pydantic_object( humidity, HumidityResponse) if close_session: session.close() return response else: list_humidity = [] humidity = select_all_from_db(Humidity, False, session) if close_session: session.close() for obj in humidity: response = pydantication.create_pydantic_object( obj, HumidityResponse) list_humidity.append(response) return list_humidity except Exception: raise ConnectionError