Files
sfgrid/core/config/config.py
2026-01-04 17:46:48 +08:00

95 lines
2.9 KiB
Python

# Global configuration variables
# Define these BEFORE imports to avoid circular dependency issues with logger
console_log = True
miniQMTPath = None
miniQMTAccount = None
log_level = "1"
from pathlib import Path
from core.config.config_model import ConfigModel, CfgKeyLogLevel, CfgKeyMiniQmtPath, CfgKeyMiniQmtAccount, CfgKeyConsoleLog
from core.database import db
def initConfig() -> bool:
"""Initialize configuration from database"""
global miniQMTPath, miniQMTAccount, log_level, console_log
# Ensure connection and tables
db.connect(reuse_if_open=True)
if not db.table_exists(ConfigModel._meta.table_name):
db.create_tables([ConfigModel])
# Check and initialize keys
_init_key(CfgKeyLogLevel, "1")
_init_key(CfgKeyConsoleLog, "True")
_init_key(CfgKeyMiniQmtPath, None)
_init_key(CfgKeyMiniQmtAccount, None)
# Load values
try:
miniQMTPath = _get_value(CfgKeyMiniQmtPath)
miniQMTAccount = _get_value(CfgKeyMiniQmtAccount)
log_level = _get_value(CfgKeyLogLevel) or "1"
console_log = _get_value(CfgKeyConsoleLog) or "True"
console_log = console_log.lower() == "true"
# console_log is not in DB currently, keeping default True or could add to DB
except Exception as e:
print(f"Error loading config: {e}")
return False
# Validate path
if not miniQMTPath or not Path(miniQMTPath).exists():
print('请先配置miniQMTPath')
return False
return True
def _init_key(key: str, default_value: str | None):
"""Helper to initialize a key if it doesn't exist"""
try:
ConfigModel.get(ConfigModel.key == key)
except ConfigModel.DoesNotExist:
ConfigModel.create(key=key, value=default_value)
def _get_value(key: str) -> str | None:
"""Helper to get value safely"""
try:
return ConfigModel.get(ConfigModel.key == key).value
except ConfigModel.DoesNotExist:
return None
def save_config(key: str, value: str):
"""Save configuration to database"""
_update_key(key, value)
print(f'配置已更新: {key}={value}')
def _update_key(key: str, value: str):
try:
record = ConfigModel.get(ConfigModel.key == key)
record.value = value
record.save()
except ConfigModel.DoesNotExist:
ConfigModel.create(key=key, value=value)
def exist_config() -> bool:
"""Check if essential config exists"""
path = _get_value(CfgKeyMiniQmtPath)
account = _get_value(CfgKeyMiniQmtAccount)
return bool(path and account)
def getLogLevel() -> str:
"""获取配置中的日志级别"""
return log_level
def getConsoleLog() -> bool:
"""获取配置中的控制台日志设置"""
return console_log
def getMiniQMTPath() -> str | None:
"""获取配置中的miniQMT路径"""
return miniQMTPath
def getMiniQMTAccount() -> str | None:
"""获取配置的miniQMT账号"""
return miniQMTAccount