from pydantic_settings import BaseSettings, SettingsConfigDict """ pool_pre_ping=True, # Verify connection before using pool_size=20, # Maximum number of permanent connections max_overflow=10, # Maximum number of additional connections pool_recycle=600, # Recycle connections after 1 hour pool_timeout=30, # Wait up to 30 seconds for a connection echo=True, # Set to True for debugging SQL queries """ class Configs(BaseSettings): """ Postgresql configuration settings. """ DB: str = "" USER: str = "" PASSWORD: str = "" HOST: str = "" PORT: str = 0 ENGINE: str = "" POOL_PRE_PING: bool = True POOL_SIZE: int = 20 MAX_OVERFLOW: int = 10 POOL_RECYCLE: int = 600 POOL_TIMEOUT: int = 30 ECHO: bool = True @property def url(self): """Generate the database URL.""" return f"{self.ENGINE}://{self.USER}:{self.PASSWORD}@{self.HOST}:{self.PORT}/{self.DB}" model_config = SettingsConfigDict(env_prefix="POSTGRES_") postgres_configs = ( Configs() ) # singleton instance of the POSTGRESQL configuration settings