2025-05-24 05:35:18 +02:00

51 lines
1.8 KiB
Python

import os
from typing import List, ClassVar
from pydantic_settings import BaseSettings
from pydantic import AnyHttpUrl, field_validator
class Settings(BaseSettings):
# Project settings
PROJECT_NAME: str = "Image Management API"
API_V1_STR: str = "/api/v1"
# Environment
ENVIRONMENT: str = "development"
# CORS settings
CORS_ORIGINS: List[str] = ["*"]
@field_validator("CORS_ORIGINS", mode="before")
def assemble_cors_origins(cls, v):
if isinstance(v, str) and not v.startswith("["):
return [i.strip() for i in v.split(",")]
return v
# Firestore settings
FIRESTORE_PROJECT_ID: str = os.getenv("FIRESTORE_PROJECT_ID", "")
FIRESTORE_CREDENTIALS_FILE: str = os.getenv("FIRESTORE_CREDENTIALS_FILE", "firestore-credentials.json")
# Google Cloud Storage settings
GCS_BUCKET_NAME: str = os.getenv("GCS_BUCKET_NAME", "image-mgmt-bucket")
GCS_CREDENTIALS_FILE: str = os.getenv("GCS_CREDENTIALS_FILE", "credentials.json")
# Security settings
API_KEY_SECRET: str = os.getenv("API_KEY_SECRET", "super-secret-key-for-development-only")
API_KEY_EXPIRY_DAYS: int = int(os.getenv("API_KEY_EXPIRY_DAYS", "365"))
# Vector Database settings (for image embeddings)
VECTOR_DB_API_KEY: str = os.getenv("VECTOR_DB_API_KEY", "")
VECTOR_DB_ENVIRONMENT: str = os.getenv("VECTOR_DB_ENVIRONMENT", "")
VECTOR_DB_INDEX_NAME: str = os.getenv("VECTOR_DB_INDEX_NAME", "image-embeddings")
# Rate limiting
RATE_LIMIT_PER_MINUTE: int = int(os.getenv("RATE_LIMIT_PER_MINUTE", "100"))
# Logging
LOG_LEVEL: str = os.getenv("LOG_LEVEL", "INFO")
model_config: ClassVar[dict] = {
"case_sensitive": True,
"env_file": ".env"
}
settings = Settings()