示例#1
0
文件: main.py 项目: PompaJokera/core
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
示例#2
0
文件: crud.py 项目: PompaJokera/core
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
示例#3
0
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
示例#4
0
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
示例#5
0
文件: crud.py 项目: PompaJokera/core
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
示例#6
0
文件: crud.py 项目: PompaJokera/core
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
示例#7
0
文件: crud.py 项目: PompaJokera/core
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
示例#8
0
文件: crud.py 项目: PompaJokera/core
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
示例#9
0
文件: crud.py 项目: PompaJokera/core
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
示例#10
0
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
示例#11
0
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
示例#12
0
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
示例#13
0
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
示例#14
0
文件: crud.py 项目: PompaJokera/core
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
示例#15
0
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