90 lines
3.0 KiB
SQL
90 lines
3.0 KiB
SQL
-- Migration 005: Convert memories.id from INTEGER to TEXT (UUID)
|
|
-- SQLite requires table rebuild for column type changes
|
|
|
|
-- Step 1: Create new table with correct schema
|
|
CREATE TABLE memories_new (
|
|
id TEXT PRIMARY KEY,
|
|
type TEXT NOT NULL DEFAULT 'fact',
|
|
category TEXT,
|
|
content TEXT NOT NULL,
|
|
confidence REAL DEFAULT 1.0,
|
|
source_id TEXT,
|
|
source_type TEXT DEFAULT 'manual',
|
|
tags TEXT,
|
|
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
updated_by TEXT NOT NULL DEFAULT 'legacy',
|
|
vector_clock TEXT NOT NULL DEFAULT '{}',
|
|
version INTEGER DEFAULT 1,
|
|
manual_override INTEGER DEFAULT 0,
|
|
-- Legacy fields (keep for compatibility)
|
|
who TEXT,
|
|
why TEXT,
|
|
project TEXT,
|
|
session_id TEXT,
|
|
importance REAL DEFAULT 0.5,
|
|
last_accessed TEXT,
|
|
access_count INTEGER DEFAULT 0,
|
|
pinned INTEGER DEFAULT 0
|
|
);
|
|
|
|
-- Step 2: Copy data with UUID conversion
|
|
INSERT INTO memories_new (
|
|
id, type, category, content, confidence, source_id, source_type, tags,
|
|
created_at, updated_at, updated_by, vector_clock, version, manual_override,
|
|
who, why, project, session_id, importance, last_accessed, access_count, pinned
|
|
)
|
|
SELECT
|
|
lower(hex(randomblob(4)) || '-' || hex(randomblob(2)) || '-4' ||
|
|
substr(hex(randomblob(2)),2) || '-' ||
|
|
substr('89ab', abs(random()) % 4 + 1, 1) ||
|
|
substr(hex(randomblob(2)),2) || '-' || hex(randomblob(6))),
|
|
COALESCE(type, 'fact'),
|
|
category,
|
|
content,
|
|
COALESCE(confidence, 1.0),
|
|
source_id,
|
|
COALESCE(source_type, 'manual'),
|
|
tags,
|
|
COALESCE(created_at, datetime('now')),
|
|
COALESCE(updated_at, datetime('now')),
|
|
COALESCE(updated_by, 'legacy'),
|
|
COALESCE(vector_clock, '{}'),
|
|
COALESCE(version, 1),
|
|
COALESCE(manual_override, 0),
|
|
who,
|
|
why,
|
|
project,
|
|
session_id,
|
|
COALESCE(importance, 0.5),
|
|
last_accessed,
|
|
COALESCE(access_count, 0),
|
|
COALESCE(pinned, 0)
|
|
FROM memories;
|
|
|
|
-- Step 3: Drop old table and rename
|
|
DROP TABLE memories;
|
|
ALTER TABLE memories_new RENAME TO memories;
|
|
|
|
-- Step 4: Recreate indexes
|
|
CREATE INDEX idx_memories_type ON memories(type);
|
|
CREATE INDEX idx_memories_category ON memories(category);
|
|
CREATE INDEX idx_memories_source ON memories(source_type, source_id);
|
|
CREATE INDEX idx_memories_created ON memories(created_at DESC);
|
|
|
|
-- Step 5: Recreate FTS triggers
|
|
CREATE TRIGGER memories_ai AFTER INSERT ON memories BEGIN
|
|
INSERT INTO memories_fts(rowid, content) VALUES (new.rowid, new.content);
|
|
END;
|
|
|
|
CREATE TRIGGER memories_ad AFTER DELETE ON memories BEGIN
|
|
INSERT INTO memories_fts(memories_fts, rowid, content)
|
|
VALUES('delete', old.rowid, old.content);
|
|
END;
|
|
|
|
CREATE TRIGGER memories_au AFTER UPDATE ON memories BEGIN
|
|
INSERT INTO memories_fts(memories_fts, rowid, content)
|
|
VALUES('delete', old.rowid, old.content);
|
|
INSERT INTO memories_fts(rowid, content) VALUES (new.rowid, new.content);
|
|
END;
|