sipi-web/sipi-app/core/config.py

55 lines
1.3 KiB
Python

from pydantic import BaseModel
from pydantic import PostgresDsn
from pydantic import MariaDBDsn
from pydantic import MySQLDsn
from pydantic_settings import (
BaseSettings,
SettingsConfigDict,
)
class RunConfig(BaseModel):
host: str = '0.0.0.0'
port: int = 8000
reload: bool = True
class ApiV1Prefix(BaseModel):
prefix: str = '/v1'
users: str = '/users'
class ApiPrefix(BaseModel):
prefix: str = '/api'
v1: ApiV1Prefix = ApiV1Prefix()
class DatabaseConfig(BaseModel):
url: PostgresDsn
echo: bool = False
echo_pool: bool = False
pool_size: int = 50
max_overflow: int = 10
naming_convention: dict[str, str] = {
'ix': 'ix_%(column_0_label)s',
'uq': 'uq_%(table_name)s_%(column_0_N_name)s',
'ck': 'ck_%(table_name)s_%(constraint_name)s',
'fk': 'fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s',
'pk': 'pk_%(table_name)s',
}
class Settings(BaseSettings):
model_config = SettingsConfigDict(
env_file=('D:\PythonScripts\sipi-web\sipi-app\.env', 'sipi-app/.env'),
case_sensitive=False,
env_nested_delimiter='__',
env_prefix='SIPI_CONFIG__',
)
run: RunConfig = RunConfig()
api: ApiPrefix = ApiPrefix()
db: DatabaseConfig
settings = Settings()