mirror of
https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git
synced 2025-08-14 00:25:46 +02:00
add websockets suppor96
This commit is contained in:
@@ -5,9 +5,13 @@ POSTGRES_DB=support
|
||||
POSTGRES_HOST=support-db
|
||||
POSTGRES_PORT=5432
|
||||
|
||||
# Redis settings
|
||||
REDIS_HOST=support-redis
|
||||
REDIS_PORT=6379
|
||||
|
||||
# JWT settings
|
||||
JWT_SECRET=your-secret-key
|
||||
JWT_ALGORITHM=HS256
|
||||
SECRET_KEY=your-secret-key-here
|
||||
ALGORITHM=HS256
|
||||
ACCESS_TOKEN_EXPIRE_MINUTES=1440 # 24 hours
|
||||
|
||||
# Telegram settings (optional)
|
||||
|
@@ -6,26 +6,32 @@ from typing import Optional
|
||||
class Settings(BaseSettings):
|
||||
"""Application settings"""
|
||||
# Database settings
|
||||
POSTGRES_USER: str
|
||||
POSTGRES_PASSWORD: str
|
||||
POSTGRES_DB: str
|
||||
POSTGRES_HOST: str
|
||||
POSTGRES_PORT: str
|
||||
POSTGRES_USER: str = "postgres"
|
||||
POSTGRES_PASSWORD: str = "postgres"
|
||||
POSTGRES_DB: str = "support"
|
||||
POSTGRES_HOST: str = "support-db"
|
||||
POSTGRES_PORT: str = "5432"
|
||||
DATABASE_URL: str = None # Будет установлено в __init__
|
||||
|
||||
@property
|
||||
def DATABASE_URL(self) -> str:
|
||||
"""Get database URL"""
|
||||
return f"postgresql://{self.POSTGRES_USER}:{self.POSTGRES_PASSWORD}@{self.POSTGRES_HOST}:{self.POSTGRES_PORT}/{self.POSTGRES_DB}"
|
||||
# Redis settings
|
||||
REDIS_HOST: str = "support-redis"
|
||||
REDIS_PORT: int = 6379
|
||||
|
||||
# JWT settings
|
||||
JWT_SECRET: str
|
||||
JWT_ALGORITHM: str = "HS256"
|
||||
SECRET_KEY: str = "your-secret-key" # В продакшене нужно заменить на безопасный ключ
|
||||
ALGORITHM: str = "HS256"
|
||||
ACCESS_TOKEN_EXPIRE_MINUTES: int = 60 * 24 # 24 hours
|
||||
|
||||
# Telegram settings
|
||||
TELEGRAM_BOT_TOKEN: Optional[str] = None
|
||||
TELEGRAM_CHAT_ID: Optional[str] = None
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
# Формируем URL для подключения к базе данных
|
||||
if not self.DATABASE_URL:
|
||||
self.DATABASE_URL = f"postgresql://{self.POSTGRES_USER}:{self.POSTGRES_PASSWORD}@{self.POSTGRES_HOST}:{self.POSTGRES_PORT}/{self.POSTGRES_DB}"
|
||||
|
||||
class Config:
|
||||
"""Pydantic config"""
|
||||
env_file = ".env"
|
||||
|
@@ -3,15 +3,22 @@ from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
from .db.base_class import Base
|
||||
from .config import settings
|
||||
import logging
|
||||
|
||||
# Настраиваем логирование
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# Создаем URL для подключения к базе данных
|
||||
SQLALCHEMY_DATABASE_URL = settings.DATABASE_URL
|
||||
logger.info(f"Database URL: {SQLALCHEMY_DATABASE_URL}")
|
||||
|
||||
# Создаем движок SQLAlchemy с логированием SQL-запросов
|
||||
engine = create_engine(
|
||||
SQLALCHEMY_DATABASE_URL,
|
||||
echo=True, # Включаем логирование SQL-запросов
|
||||
pool_pre_ping=True # Проверяем соединение перед использованием
|
||||
pool_pre_ping=True, # Проверяем соединение перед использованием
|
||||
pool_size=5, # Размер пула соединений
|
||||
max_overflow=10 # Максимальное количество дополнительных соединений
|
||||
)
|
||||
|
||||
# Создаем фабрику сессий
|
||||
|
@@ -4,7 +4,7 @@ from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from .db.base import Base
|
||||
from .database import engine
|
||||
from .routers import auth, requests, employees
|
||||
from .routers import auth, requests, employees, admin, statistics
|
||||
from .websockets.notifications import notification_manager
|
||||
|
||||
# Настраиваем логирование
|
||||
@@ -30,9 +30,11 @@ app.add_middleware(
|
||||
)
|
||||
|
||||
# Подключаем роутеры
|
||||
app.include_router(auth.router, prefix="/api", tags=["auth"])
|
||||
app.include_router(auth.router, prefix="/api/auth", tags=["auth"])
|
||||
app.include_router(requests.router, prefix="/api/requests", tags=["requests"])
|
||||
app.include_router(employees.router, prefix="/api/employees", tags=["employees"])
|
||||
app.include_router(admin.router, prefix="/api/admin", tags=["admin"])
|
||||
app.include_router(statistics.router, prefix="/api/statistics", tags=["statistics"])
|
||||
|
||||
# Добавляем WebSocket маршруты
|
||||
app.websocket("/api/ws/admin")(notification_manager.admin_endpoint)
|
||||
|
Reference in New Issue
Block a user