113 lines
4.2 KiB
Python
113 lines
4.2 KiB
Python
import os
|
|
from pydantic_settings import BaseSettings
|
|
from dotenv import load_dotenv
|
|
from pathlib import Path
|
|
|
|
# Загружаем переменные окружения из .env файла
|
|
load_dotenv()
|
|
|
|
# Базовые настройки
|
|
API_PREFIX = "/api"
|
|
DEBUG = False
|
|
|
|
# Настройки безопасности
|
|
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 МБ
|
|
|
|
# Настройки MinIO/S3
|
|
MINIO_ENDPOINT_URL = os.getenv("MINIO_ENDPOINT_URL", "http://localhost:9000")
|
|
MINIO_ACCESS_KEY = os.getenv("MINIO_ACCESS_KEY", "minioadmin")
|
|
MINIO_SECRET_KEY = os.getenv("MINIO_SECRET_KEY", "minioadmin")
|
|
MINIO_BUCKET_NAME = os.getenv("MINIO_BUCKET_NAME", "images")
|
|
MINIO_USE_SSL = os.getenv("MINIO_USE_SSL", "false").lower() == "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"
|
|
DEBUG: bool = False
|
|
|
|
# Настройки базы данных
|
|
DATABASE_URL: str = "postgresql://gen_user:F%2BgEEiP3h7yB6d@93.183.81.86:5432/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 = "uploads"
|
|
MAX_UPLOAD_SIZE: int = MAX_UPLOAD_SIZE
|
|
ALLOWED_UPLOAD_EXTENSIONS: list = list(ALLOWED_UPLOAD_EXTENSIONS)
|
|
|
|
# Настройки MinIO/S3
|
|
MINIO_ENDPOINT_URL: str = MINIO_ENDPOINT_URL
|
|
MINIO_ACCESS_KEY: str = MINIO_ACCESS_KEY
|
|
MINIO_SECRET_KEY: str = MINIO_SECRET_KEY
|
|
MINIO_BUCKET_NAME: str = MINIO_BUCKET_NAME
|
|
MINIO_USE_SSL: bool = MINIO_USE_SSL
|
|
|
|
# Настройки для платежных систем (пример)
|
|
PAYMENT_GATEWAY_API_KEY: str = os.getenv("PAYMENT_GATEWAY_API_KEY", "")
|
|
PAYMENT_GATEWAY_SECRET: str = os.getenv("PAYMENT_GATEWAY_SECRET", "")
|
|
|
|
# Настройки для CDEK API
|
|
CDEK_LOGIN: str = os.getenv("CDEK_LOGIN", "cdek-login")
|
|
CDEK_PASSWORD: str = os.getenv("CDEK_PASSWORD", "cdek-pass")
|
|
CDEK_BASE_URL: str = os.getenv("CDEK_BASE_URL", "https://api.cdek.ru/v2")
|
|
|
|
# Настройки для отправки 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
|
|
|
|
# Настройки Meilisearch
|
|
MEILISEARCH_URL: str = os.getenv("MEILISEARCH_URL", "http://0.0.0.0:7700")
|
|
MEILISEARCH_KEY: str = os.getenv("MEILISEARCH_KEY", "masterKey")
|
|
|
|
|
|
class Config:
|
|
env_file = ".env"
|
|
env_file_encoding = "utf-8"
|
|
|
|
|
|
# Создаем экземпляр настроек
|
|
settings = Settings() |