53 lines
2.0 KiB
Python
53 lines
2.0 KiB
Python
import os
|
|
from pydantic_settings import BaseSettings
|
|
from dotenv import load_dotenv
|
|
|
|
# Загружаем переменные окружения из .env файла
|
|
load_dotenv()
|
|
|
|
|
|
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 = os.getenv("SECRET_KEY", "your-secret-key-for-jwt-please-change-in-production")
|
|
ALGORITHM: str = "HS256"
|
|
ACCESS_TOKEN_EXPIRE_MINUTES: int = 30*60*24
|
|
|
|
# Настройки CORS
|
|
CORS_ORIGINS: list = [
|
|
"http://localhost",
|
|
"http://localhost:3000",
|
|
"http://localhost:8000",
|
|
"http://localhost:8080",
|
|
]
|
|
|
|
# Настройки для загрузки файлов
|
|
UPLOAD_DIRECTORY: str = "uploads"
|
|
MAX_UPLOAD_SIZE: int = 5 * 1024 * 1024 # 5 MB
|
|
ALLOWED_UPLOAD_EXTENSIONS: list = ["jpg", "jpeg", "png", "gif", "webp"]
|
|
|
|
# Настройки для платежных систем (пример)
|
|
PAYMENT_GATEWAY_API_KEY: str = os.getenv("PAYMENT_GATEWAY_API_KEY", "")
|
|
PAYMENT_GATEWAY_SECRET: str = os.getenv("PAYMENT_GATEWAY_SECRET", "")
|
|
|
|
# Настройки для отправки email (пример)
|
|
SMTP_SERVER: str = os.getenv("SMTP_SERVER", "")
|
|
SMTP_PORT: int = int(os.getenv("SMTP_PORT", "587"))
|
|
SMTP_USERNAME: str = os.getenv("SMTP_USERNAME", "")
|
|
SMTP_PASSWORD: str = os.getenv("SMTP_PASSWORD", "")
|
|
EMAIL_FROM: str = os.getenv("EMAIL_FROM", "noreply@example.com")
|
|
|
|
class Config:
|
|
env_file = ".env"
|
|
env_file_encoding = "utf-8"
|
|
|
|
|
|
# Создаем экземпляр настроек
|
|
settings = Settings() |