61 lines
2.4 KiB
Python
61 lines
2.4 KiB
Python
from fastapi import APIRouter
|
|
from app.services.server.command import CommandService
|
|
from app.services.server.event import EventService
|
|
from app.models.server.command import ServerCommand, InventoryRequest
|
|
from datetime import datetime
|
|
import uuid
|
|
|
|
router = APIRouter(
|
|
prefix="/api/server",
|
|
tags=["Server Management"]
|
|
)
|
|
|
|
@router.post("/events")
|
|
async def receive_server_event(event_data: dict):
|
|
# Обновляем активность сервера
|
|
server_ip = event_data.get("server_ip")
|
|
if server_ip:
|
|
await update_server_activity(server_ip)
|
|
return await EventService().process_event(event_data)
|
|
|
|
@router.post("/commands")
|
|
async def add_server_command(command_data: ServerCommand):
|
|
# Обновляем last_activity для сервера
|
|
await CommandService()._update_server_activity(command_data.server_ip)
|
|
return await CommandService().add_command(command_data)
|
|
|
|
@router.get("/commands")
|
|
async def get_server_commands(server_ip: str):
|
|
return await CommandService().get_commands(server_ip)
|
|
|
|
@router.post("/inventory")
|
|
async def request_player_inventory(inventory_request: InventoryRequest):
|
|
"""Создаёт запрос на получение инвентаря игрока"""
|
|
return await CommandService().request_inventory(inventory_request)
|
|
|
|
@router.get("/inventory/requests")
|
|
async def get_inventory_requests(server_ip: str):
|
|
"""Получает список запросов инвентаря для сервера"""
|
|
return await CommandService().get_inventory_requests(server_ip)
|
|
|
|
@router.post("/inventory/submit")
|
|
async def submit_inventory(inventory_data: dict):
|
|
"""Принимает данные инвентаря от сервера"""
|
|
return await CommandService().submit_inventory(inventory_data)
|
|
|
|
@router.get("/inventory/{request_id}")
|
|
async def get_inventory_result(request_id: str):
|
|
"""Получает результаты запроса инвентаря"""
|
|
return await CommandService().get_inventory_result(request_id)
|
|
|
|
async def update_server_activity(server_ip):
|
|
"""Обновляет время последней активности сервера"""
|
|
from app.db.database import db
|
|
game_servers_collection = db.game_servers
|
|
|
|
await game_servers_collection.update_one(
|
|
{"ip": server_ip},
|
|
{"$set": {"last_activity": datetime.utcnow()}},
|
|
upsert=False
|
|
)
|