File size: 1,222 Bytes
3370983
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
"""
Main application settings.

This module aggregates all settings into a single Settings class.
For most use cases, import individual settings directly:

    from src.backend.configs import get_cv_settings, get_openai_settings
    
    cv = get_cv_settings()
    openai = get_openai_settings()
"""

from functools import lru_cache
from pydantic import Field
from pydantic_settings import BaseSettings, SettingsConfigDict
from dotenv import load_dotenv

# Load environment variables
load_dotenv()

from .cv import CVUploadSettings
from .database import DatabaseSettings
from .openai import OpenAISettings


class Settings(BaseSettings):
    """
    Aggregated application settings.
    
    Combines all configuration in one place. Individual settings
    can also be accessed via their dedicated getter functions.
    """
    
    model_config = SettingsConfigDict(
        extra="ignore",
    )
    
    cv: CVUploadSettings = Field(default_factory=CVUploadSettings)
    database: DatabaseSettings = Field(default_factory=DatabaseSettings)
    openai: OpenAISettings = Field(default_factory=OpenAISettings)


@lru_cache
def get_settings() -> Settings:
    """Get cached main settings instance."""
    return Settings()