import os from pydantic_settings import BaseSettings from dotenv import load_dotenv from pathlib import Path # Загружаем переменные окружения из .env файла load_dotenv() # Базовые настройки API_PREFIX = "/api" DEBUG = True # Настройки безопасности SECRET_KEY = os.getenv("SECRET_KEY", "supersecretkey") # Для JWT ALGORITHM = "HS256" ACCESS_TOKEN_EXPIRE_MINUTES = 60 * 24 * 7 # 7 дней # Настройки базы данных DATABASE_URL = os.getenv("DATABASE_URL", "sqlite:///./app.db") # Настройки почты MAIL_USERNAME = os.getenv("MAIL_USERNAME", "test@example.com") MAIL_PASSWORD = os.getenv("MAIL_PASSWORD", "test_password") MAIL_FROM = os.getenv("MAIL_FROM", "noreply@example.com") MAIL_PORT = int(os.getenv("MAIL_PORT", "587")) MAIL_SERVER = os.getenv("MAIL_SERVER", "smtp.example.com") MAIL_TLS = True MAIL_SSL = False # Настройки загрузки файлов UPLOAD_DIRECTORY = os.getenv("UPLOAD_DIRECTORY", "uploads") ALLOWED_UPLOAD_EXTENSIONS = {"jpg", "jpeg", "png", "gif", "webp"} MAX_UPLOAD_SIZE = 10 * 1024 * 1024 # 10 МБ # Создаем директорию для загрузок при запуске, если её нет uploads_dir = Path(UPLOAD_DIRECTORY) uploads_dir.mkdir(parents=True, exist_ok=True) products_dir = uploads_dir / "products" products_dir.mkdir(parents=True, exist_ok=True) # Настройки корзины CART_EXPIRATION_DAYS = 30 # Срок хранения корзины # Настройки API MAX_PAGE_SIZE = 100 # Максимальный размер страницы для пагинации # Базовый URL фронтенда FRONTEND_URL = os.getenv("FRONTEND_URL", "http://localhost:3000") class Settings(BaseSettings): # Основные настройки приложения APP_NAME: str = "Интернет-магазин API" APP_VERSION: str = "0.1.0" APP_DESCRIPTION: str = "API для интернет-магазина на FastAPI" # Настройки базы данных DATABASE_URL: str = os.getenv("DATABASE_URL", "postgresql://postgres:postgres@localhost:5434/shop_db") # Настройки безопасности SECRET_KEY: str = SECRET_KEY ALGORITHM: str = ALGORITHM ACCESS_TOKEN_EXPIRE_MINUTES: int = ACCESS_TOKEN_EXPIRE_MINUTES # Настройки CORS CORS_ORIGINS: list = [ "http://localhost", "http://localhost:3000", "http://localhost:8000", "http://localhost:8080", ] # Настройки для загрузки файлов UPLOAD_DIRECTORY: str = UPLOAD_DIRECTORY MAX_UPLOAD_SIZE: int = MAX_UPLOAD_SIZE ALLOWED_UPLOAD_EXTENSIONS: list = list(ALLOWED_UPLOAD_EXTENSIONS) # Настройки для платежных систем (пример) PAYMENT_GATEWAY_API_KEY: str = os.getenv("PAYMENT_GATEWAY_API_KEY", "") PAYMENT_GATEWAY_SECRET: str = os.getenv("PAYMENT_GATEWAY_SECRET", "") # Настройки для отправки email (пример) SMTP_SERVER: str = MAIL_SERVER SMTP_PORT: int = MAIL_PORT SMTP_USERNAME: str = MAIL_USERNAME SMTP_PASSWORD: str = MAIL_PASSWORD EMAIL_FROM: str = MAIL_FROM class Config: env_file = ".env" env_file_encoding = "utf-8" # Создаем экземпляр настроек settings = Settings()