|
|
|
|
from fastapi import FastAPI, Depends
|
|
|
|
|
|
|
|
|
|
from .server_data import ServerData
|
|
|
|
|
from .utils.dependencies import right_checkers
|
|
|
|
|
from .models.database import database
|
|
|
|
|
from .routers.users import router as users_router
|
|
|
|
|
from .routers.commands import router as commands_router
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# TODO
|
|
|
|
|
# 1. Разобраться с описанием команд как ресурсов и со всем, что от них зависит.
|
|
|
|
|
# 2. Разобраться с объектами воркеров. И способом их функционирования.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
data = ServerData()
|
|
|
|
|
app = FastAPI()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.on_event("startup")
|
|
|
|
|
async def startup():
|
|
|
|
|
await database.connect()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.on_event("shutdown")
|
|
|
|
|
async def shutdown():
|
|
|
|
|
await database.disconnect()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.get("/", tags=["Root"],
|
|
|
|
|
dependencies=[Depends(right_checkers["read"])])
|
|
|
|
|
async def get_root() -> dict:
|
|
|
|
|
'''Обработчик корневых запросов.'''
|
|
|
|
|
return {'msg': 'root msg'}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.get("/workers/{wid}", tags=["Workers management"],
|
|
|
|
|
dependencies=[Depends(right_checkers["write"])])
|
|
|
|
|
async def get_worker(wid: int):
|
|
|
|
|
'''Тестовый обработчик.'''
|
|
|
|
|
worker = data.get_worker_object(wid=wid)
|
|
|
|
|
worker.run()
|
|
|
|
|
print(f"worker: {type(worker)} object {worker}")
|
|
|
|
|
|
|
|
|
|
await worker.send({"text": "INFO"})
|
|
|
|
|
worker_data = await worker.get()
|
|
|
|
|
|
|
|
|
|
if worker_data['type'] == 'log':
|
|
|
|
|
data.log_message[data['level']](data['msg'])
|
|
|
|
|
return worker_data
|
|
|
|
|
|
|
|
|
|
# Authentification and users management.
|
|
|
|
|
app.include_router(users_router)
|
|
|
|
|
|
|
|
|
|
# Commands creation and management.
|
|
|
|
|
app.include_router(commands_router)
|