FuckingChat/config/schema.py

43 lines
1.1 KiB
Python

"""
config/schema.py — schema & defaults for chat configuration.
"""
from dataclasses import dataclass, field
from typing import Optional
@dataclass
class DatabaseConfig:
engine: str = "sqlite" # "sqlite" | "mariadb"
sqlite_path: str = "chat.db"
mariadb_host: str = "localhost"
mariadb_port: int = 3306
mariadb_user: str = "chat"
mariadb_password: str = "chat"
mariadb_database: str = "chat"
@dataclass
class SecurityConfig:
secret: str = "default_secret_change_me"
salt: str = "default_salt_change_me"
admin_token: str = ""
rate_limit: int = 5
rate_window: int = 10
max_message_length: int = 2000
@dataclass
class ServerConfig:
host: str = "0.0.0.0"
port: int = 8080
debug: bool = False
@dataclass
class TenorConfig:
api_key: str = ""
@dataclass
class AppConfig:
db: DatabaseConfig = field(default_factory=DatabaseConfig)
security: SecurityConfig = field(default_factory=SecurityConfig)
server: ServerConfig = field(default_factory=ServerConfig)
tenor: TenorConfig = field(default_factory=TenorConfig)