FactsDB/factsdb/config.py

56 lines
1.5 KiB
Python

"""
Configuration module for FactsDB service
Loads configuration from environment variables
"""
import os
from dataclasses import dataclass
from typing import Optional
@dataclass
class DatabaseConfig:
"""Database configuration"""
path: str = "./facts.db"
@dataclass
class AIEndpointConfig:
"""AI endpoint configuration"""
url: str = "http://example.com:4000/v1/chat/completions"
auth_token: str = "111"
@dataclass
class FTPServerConfig:
"""FTP server configuration"""
host: str = "0.0.0.0"
port: int = 2121
username: str = "factsdb"
password: str = "factsdb"
@dataclass
class SchedulerConfig:
"""Scheduler configuration"""
interval_minutes: int = 10
class Config:
"""Main configuration class"""
def __init__(self):
self.database = DatabaseConfig(
path=os.getenv('DATABASE_PATH', 'facts.db')
)
self.ai_endpoint = AIEndpointConfig(
url=os.getenv('AI_ENDPOINT_URL', 'http://example.com:4000/v1/chat/completions'),
auth_token=os.getenv('AI_ENDPOINT_TOKEN', '111')
)
self.ftp_server = FTPServerConfig(
host=os.getenv('FTP_HOST', '0.0.0.0'),
port=int(os.getenv('FTP_PORT', '2121')),
username=os.getenv('FTP_USERNAME', 'factsdb'),
password=os.getenv('FTP_PASSWORD', 'factsdb')
)
self.scheduler = SchedulerConfig(
interval_minutes=int(os.getenv('SCHEDULER_INTERVAL', '10'))
)