You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1.6 KiB

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)