Добавлено хранилище настроек DevConsole
Этот коммит содержится в:
@@ -0,0 +1,57 @@
|
||||
import os
|
||||
import sqlite3
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
DATA_DIR = Path(os.getenv('DEVCONSOLE_DATA_DIR', '/var/lib/devconsole'))
|
||||
DB_PATH = DATA_DIR / 'devconsole.db'
|
||||
|
||||
|
||||
def _connect() -> sqlite3.Connection:
|
||||
DATA_DIR.mkdir(parents=True, exist_ok=True)
|
||||
conn = sqlite3.connect(DB_PATH)
|
||||
conn.row_factory = sqlite3.Row
|
||||
conn.execute(
|
||||
'''
|
||||
CREATE TABLE IF NOT EXISTS settings (
|
||||
key TEXT PRIMARY KEY,
|
||||
value TEXT NOT NULL,
|
||||
updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||||
)
|
||||
'''
|
||||
)
|
||||
conn.commit()
|
||||
return conn
|
||||
|
||||
|
||||
def set_setting(key: str, value: str) -> None:
|
||||
with _connect() as conn:
|
||||
conn.execute(
|
||||
'''
|
||||
INSERT INTO settings(key, value, updated_at)
|
||||
VALUES (?, ?, CURRENT_TIMESTAMP)
|
||||
ON CONFLICT(key) DO UPDATE SET
|
||||
value = excluded.value,
|
||||
updated_at = CURRENT_TIMESTAMP
|
||||
''',
|
||||
(key, value),
|
||||
)
|
||||
conn.commit()
|
||||
|
||||
|
||||
def get_setting(key: str) -> Optional[str]:
|
||||
with _connect() as conn:
|
||||
row = conn.execute('SELECT value FROM settings WHERE key = ?', (key,)).fetchone()
|
||||
return row['value'] if row else None
|
||||
|
||||
|
||||
def has_openai_key() -> bool:
|
||||
return bool(get_openai_key())
|
||||
|
||||
|
||||
def get_openai_key() -> Optional[str]:
|
||||
return get_setting('OPENAI_API_KEY') or os.getenv('OPENAI_API_KEY') or None
|
||||
|
||||
|
||||
def get_openai_model() -> str:
|
||||
return get_setting('OPENAI_MODEL') or os.getenv('OPENAI_MODEL') or 'gpt-5'
|
||||
Ссылка в новой задаче
Block a user