first commit

This commit is contained in:
Grigo
2026-05-28 08:42:46 +03:00
commit e5c0df308f
38 changed files with 2753 additions and 0 deletions
+70
View File
@@ -0,0 +1,70 @@
import aiosqlite
import os
DB_PATH = os.getenv("DB_PATH", "data/chat.db")
async def init_db():
os.makedirs(os.path.dirname(DB_PATH), exist_ok=True)
async with aiosqlite.connect(DB_PATH) as db:
await db.executescript("""
CREATE TABLE IF NOT EXISTS sessions (
session_id TEXT PRIMARY KEY,
persona_id TEXT DEFAULT 'default',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,
title TEXT DEFAULT 'Новый чат'
);
CREATE TABLE IF NOT EXISTS messages (
id INTEGER PRIMARY KEY AUTOINCREMENT,
session_id TEXT NOT NULL,
role TEXT NOT NULL,
content TEXT NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (session_id) REFERENCES sessions(session_id)
);
CREATE INDEX IF NOT EXISTS idx_messages_session
ON messages(session_id);
CREATE TABLE IF NOT EXISTS personas (
persona_id TEXT PRIMARY KEY,
name TEXT NOT NULL,
emoji TEXT DEFAULT '🤖',
description TEXT DEFAULT '',
prompt TEXT NOT NULL,
custom INTEGER DEFAULT 1,
sd_enabled INTEGER DEFAULT 0,
lora_name TEXT DEFAULT '',
lora_weight REAL DEFAULT 0.8,
appearance_tags TEXT DEFAULT ''
);
CREATE TABLE IF NOT EXISTS characters (
card_id TEXT PRIMARY KEY,
name TEXT NOT NULL,
description TEXT DEFAULT '',
personality TEXT DEFAULT '',
scenario TEXT DEFAULT '',
first_mes TEXT DEFAULT '',
mes_example TEXT DEFAULT '',
raw_json TEXT NOT NULL,
lora_name TEXT DEFAULT '',
lora_weight REAL DEFAULT 0.8,
appearance_tags TEXT DEFAULT '',
lorebook_json TEXT DEFAULT '[]',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
""")
await _migrate_messages_columns(db)
await db.commit()
async def _migrate_messages_columns(db):
async with db.execute("PRAGMA table_info(messages)") as cur:
cols = {row[1] for row in await cur.fetchall()}
if "image_prompt" not in cols:
await db.execute("ALTER TABLE messages ADD COLUMN image_prompt TEXT")
if "image_path" not in cols:
await db.execute("ALTER TABLE messages ADD COLUMN image_path TEXT")