Create database.py
This commit is contained in:
70
database.py
Normal file
70
database.py
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
import sqlite3
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
|
||||||
|
DB_FILE = "comfy_settings.db"
|
||||||
|
|
||||||
|
def init_db():
|
||||||
|
"""Initialize the database table if it doesn't exist."""
|
||||||
|
conn = sqlite3.connect(DB_FILE)
|
||||||
|
c = conn.cursor()
|
||||||
|
# We store the unique name of the file and the entire JSON blob
|
||||||
|
c.execute('''CREATE TABLE IF NOT EXISTS settings (
|
||||||
|
filename TEXT PRIMARY KEY,
|
||||||
|
data TEXT,
|
||||||
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
|
)''')
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
def save_setting(filename, data):
|
||||||
|
"""Save settings to DB and then export to JSON file."""
|
||||||
|
# 1. Save to Database
|
||||||
|
conn = sqlite3.connect(DB_FILE)
|
||||||
|
c = conn.cursor()
|
||||||
|
json_str = json.dumps(data)
|
||||||
|
c.execute("INSERT OR REPLACE INTO settings (filename, data) VALUES (?, ?)",
|
||||||
|
(filename, json_str))
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
# 2. Produce JSON File (The artifact for ComfyUI)
|
||||||
|
# Ensure the directory exists if filename has a path
|
||||||
|
if os.path.dirname(filename):
|
||||||
|
os.makedirs(os.path.dirname(filename), exist_ok=True)
|
||||||
|
|
||||||
|
with open(filename, 'w', encoding='utf-8') as f:
|
||||||
|
json.dump(data, f, indent=4)
|
||||||
|
|
||||||
|
def load_setting(filename):
|
||||||
|
"""Load settings from DB. Fallback to file if not in DB."""
|
||||||
|
conn = sqlite3.connect(DB_FILE)
|
||||||
|
c = conn.cursor()
|
||||||
|
c.execute("SELECT data FROM settings WHERE filename=?", (filename,))
|
||||||
|
row = c.fetchone()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
if row:
|
||||||
|
return json.loads(row[0])
|
||||||
|
else:
|
||||||
|
# Fallback: If not in DB, try reading the file and import it
|
||||||
|
if os.path.exists(filename):
|
||||||
|
try:
|
||||||
|
with open(filename, 'r', encoding='utf-8') as f:
|
||||||
|
data = json.load(f)
|
||||||
|
# Auto-import to DB
|
||||||
|
save_setting(filename, data)
|
||||||
|
return data
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error loading file {filename}: {e}")
|
||||||
|
return {}
|
||||||
|
return {}
|
||||||
|
|
||||||
|
def get_all_filenames():
|
||||||
|
"""Retrieve all filenames stored in the DB."""
|
||||||
|
conn = sqlite3.connect(DB_FILE)
|
||||||
|
c = conn.cursor()
|
||||||
|
c.execute("SELECT filename FROM settings")
|
||||||
|
rows = c.fetchall()
|
||||||
|
conn.close()
|
||||||
|
return [row[0] for row in rows]
|
||||||
Reference in New Issue
Block a user