2024-07-16 15:55:45 +02:00
|
|
|
from contextlib import asynccontextmanager
|
|
|
|
|
|
|
|
|
|
from fastapi import FastAPI
|
2024-08-07 14:44:24 +02:00
|
|
|
from pydantic import BaseModel
|
2024-07-16 15:55:45 +02:00
|
|
|
|
2024-08-07 16:58:06 +02:00
|
|
|
from src.cloud_util.mqtt import MQTT
|
2024-08-15 14:51:33 +02:00
|
|
|
from src.config import Config
|
2024-08-06 17:14:00 +02:00
|
|
|
from src.recorder.poo import PooRecorder
|
2024-07-16 15:55:45 +02:00
|
|
|
|
2024-08-15 14:51:33 +02:00
|
|
|
Config.init()
|
|
|
|
|
|
2024-08-07 16:58:06 +02:00
|
|
|
mqtt = MQTT()
|
|
|
|
|
poo_recorder = PooRecorder(mqtt)
|
2024-07-16 15:55:45 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@asynccontextmanager
|
2024-07-17 16:44:30 +02:00
|
|
|
async def _lifespan(_app: FastAPI): # noqa: ANN202
|
2024-08-07 16:58:06 +02:00
|
|
|
await mqtt.start()
|
2024-07-16 15:55:45 +02:00
|
|
|
yield
|
2024-08-07 16:58:06 +02:00
|
|
|
await mqtt.stop()
|
2024-07-16 15:55:45 +02:00
|
|
|
|
|
|
|
|
|
2024-08-07 14:44:24 +02:00
|
|
|
class PooRecordField(BaseModel):
|
|
|
|
|
status: str
|
|
|
|
|
|
|
|
|
|
|
2024-07-16 15:55:45 +02:00
|
|
|
app = FastAPI(lifespan=_lifespan)
|
|
|
|
|
|
|
|
|
|
|
2024-08-07 14:44:24 +02:00
|
|
|
@app.post("/poo/record")
|
|
|
|
|
async def record(record_detail: PooRecordField) -> PooRecordField:
|
2024-08-07 16:58:06 +02:00
|
|
|
await poo_recorder.record(record_detail.status)
|
2024-08-07 14:44:24 +02:00
|
|
|
return record_detail
|