/
eugenee
/
QueueService
Обзор
Документация
Войти
/
eugenee
/
QueueService
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/main.py
73 строки
3 KB
eugenee
backend
18 дек 2025, 21:14
18 дек 2025, 21:14
8052e14
Код
Авторство
О чём код?
from fastapi import FastAPI, Depends, HTTPException from fastapi.middleware.cors import CORSMiddleware from sqlalchemy.orm import Session from typing import List import uvicorn # 1. Импортируем компоненты from app.database import get_db, engine from app import models, schemas, crud # 2. Создаем таблицы в базе данных (если их нет) models.Base.metadata.create_all(bind=engine) # 3. Создаем приложение app = FastAPI(title="Queue System API (Real Database)", version="1.0.0") # 4. Настройка CORS app.add_middleware( CORSMiddleware, allow_origins=["http://localhost:4200"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # API endpoints @app.get("/") async def root(): return {"message": "Queue System API with PostgreSQL", "status": "running"} @app.get("/api/health") async def health_check(): return {"status": "healthy"} # Получить следующий талон @app.post("/api/tickets/", response_model=schemas.TicketResponse) async def create_ticket(queue_type: str = "default", db: Session = Depends(get_db)): """Создает новый талон в указанной очереди""" return crud.create_ticket(db, queue_type) # Вызвать следующий талон @app.put("/api/tickets/next/call", response_model=schemas.TicketResponse) async def call_next_ticket(db: Session = Depends(get_db)): """Вызывает следующий талон в очереди""" ticket = crud.call_next_ticket(db) if not ticket: raise HTTPException(status_code=404, detail="Нет ожидающих талонов") # [citation:3] return ticket # Получить текущий вызываемый талон @app.get("/api/tickets/current", response_model=schemas.TicketResponse) async def get_current_ticket(db: Session = Depends(get_db)): """Получает текущий вызываемый талон""" ticket = crud.get_current_ticket(db) if not ticket: raise HTTPException(status_code=404, detail="Нет активного талона") # [citation:3] return ticket # Получить список ожидающих талонов @app.get("/api/tickets/waiting", response_model=List[schemas.TicketResponse]) async def get_waiting_tickets(db: Session = Depends(get_db)): """Получает список всех талонов в статусе 'waiting'""" return crud.get_waiting_tickets(db) # Получить статистику @app.get("/api/stats") async def get_statistics(db: Session = Depends(get_db)): """Получает статистику по талонам""" return crud.get_stats(db) if __name__ == "__main__": uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)