Initial commit: SIBU 2.0 MISSION
This commit is contained in:
46
backend/app/core/config.py
Normal file
46
backend/app/core/config.py
Normal file
@ -0,0 +1,46 @@
|
||||
"""Configuration settings using pydantic-settings."""
|
||||
import os
|
||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||
from typing import Literal
|
||||
|
||||
|
||||
def get_env_file() -> str:
|
||||
"""Get the appropriate env file based on ENVIRONMENT variable."""
|
||||
env = os.getenv("ENVIRONMENT", "development")
|
||||
env_file = f".env.{env}"
|
||||
|
||||
# Check if env file exists, fallback to .env.development
|
||||
if not os.path.exists(env_file):
|
||||
env_file = ".env.development"
|
||||
|
||||
return env_file
|
||||
|
||||
|
||||
class Settings(BaseSettings):
|
||||
"""Application settings loaded from environment variables."""
|
||||
|
||||
# Database
|
||||
database_url: str = "postgresql+asyncpg://sibu:sibu@localhost:5432/sibu"
|
||||
|
||||
# Google Maps (for server-side APIs)
|
||||
google_maps_api_key: str = ""
|
||||
google_maps_url_signing_secret: str = ""
|
||||
|
||||
# Environment
|
||||
environment: Literal["development", "production", "testing"] = "development"
|
||||
debug: bool = False
|
||||
|
||||
# Security
|
||||
admin_password: str = "admin" # Default for development, override in .env
|
||||
secret_key: str = "insecure-secret-key-dev" # Default for development, override in .env
|
||||
|
||||
model_config = SettingsConfigDict(
|
||||
env_file=get_env_file(),
|
||||
env_file_encoding="utf-8",
|
||||
case_sensitive=False,
|
||||
extra="ignore",
|
||||
)
|
||||
|
||||
|
||||
# Global settings instance
|
||||
settings = Settings()
|
||||
Reference in New Issue
Block a user