mcp-claude-duo/docs/schema.sql
StillHammer 66e5c677ea v3.0 - Conversation-based messaging system
Features:
- Direct conversations (1-to-1) auto-created and permanent
- Group conversations with leave/archive support
- Real-time messaging via long-polling
- Offline notifications via CLAUDE.md
- Auto-registration on MCP startup

Architecture:
- Broker: Express HTTP server + SQLite
- MCP Partner: Modular tools (one file per tool)
- Full documentation and API reference
2026-01-25 02:57:24 +07:00

53 lines
2.0 KiB
SQL

-- Schema de la base de données Claude Duo v3 (Conversations)
-- La base est créée automatiquement par broker/db.js
-- Partenaires (instances Claude Code)
CREATE TABLE IF NOT EXISTS partners (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
project_path TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
last_seen DATETIME DEFAULT CURRENT_TIMESTAMP,
status TEXT DEFAULT 'online',
status_message TEXT,
notifications_enabled INTEGER DEFAULT 1
);
-- Conversations
CREATE TABLE IF NOT EXISTS conversations (
id TEXT PRIMARY KEY, -- direct_<a>_<b> ou group_<timestamp>_<random>
name TEXT, -- Nom (null pour les direct)
type TEXT NOT NULL DEFAULT 'direct', -- 'direct' ou 'group'
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
created_by TEXT, -- Créateur (pour les groupes)
is_archived INTEGER DEFAULT 0, -- Archivée quand plus de participants
FOREIGN KEY (created_by) REFERENCES partners(id)
);
-- Participants aux conversations
CREATE TABLE IF NOT EXISTS conversation_participants (
conversation_id TEXT NOT NULL,
partner_id TEXT NOT NULL,
joined_at DATETIME DEFAULT CURRENT_TIMESTAMP,
last_read_at DATETIME, -- Pour calculer les messages non lus
PRIMARY KEY (conversation_id, partner_id),
FOREIGN KEY (conversation_id) REFERENCES conversations(id),
FOREIGN KEY (partner_id) REFERENCES partners(id)
);
-- Messages
CREATE TABLE IF NOT EXISTS messages (
id INTEGER PRIMARY KEY AUTOINCREMENT,
conversation_id TEXT NOT NULL,
from_id TEXT NOT NULL,
content TEXT NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (conversation_id) REFERENCES conversations(id),
FOREIGN KEY (from_id) REFERENCES partners(id)
);
-- Index
CREATE INDEX IF NOT EXISTS idx_messages_conversation ON messages(conversation_id, created_at);
CREATE INDEX IF NOT EXISTS idx_participants_partner ON conversation_participants(partner_id);
CREATE INDEX IF NOT EXISTS idx_conversations_archived ON conversations(is_archived);