39 lines
1.6 KiB
Go
39 lines
1.6 KiB
Go
package memory
|
|
|
|
// schema DDL。internal/db 中的迁移框架是领域表的权威
|
|
// 机制,但这里刻意不用它:db 包的迁移测试断言精确的
|
|
// 迁移数量,而记忆存储必须自包含、
|
|
// 可在任意 *sql.DB 上使用。表与索引因此
|
|
// 由 NewStore 幂等创建。
|
|
const createMemoryItemsTable = `
|
|
CREATE TABLE IF NOT EXISTS memory_items (
|
|
id TEXT PRIMARY KEY,
|
|
persona_id TEXT NOT NULL,
|
|
role_id TEXT NOT NULL DEFAULT '',
|
|
project_id TEXT NOT NULL DEFAULT '',
|
|
scope TEXT NOT NULL,
|
|
kind TEXT NOT NULL,
|
|
content TEXT NOT NULL,
|
|
tags TEXT NOT NULL DEFAULT '[]',
|
|
confidence REAL NOT NULL DEFAULT 1.0,
|
|
source_conversation TEXT NOT NULL DEFAULT '',
|
|
created_at TEXT NOT NULL,
|
|
updated_at TEXT NOT NULL,
|
|
decay_weight REAL NOT NULL DEFAULT 1.0,
|
|
status TEXT NOT NULL DEFAULT 'active',
|
|
merged_into TEXT NOT NULL DEFAULT '',
|
|
merged_from TEXT NOT NULL DEFAULT '[]',
|
|
merge_count INTEGER NOT NULL DEFAULT 1,
|
|
occurred_at TEXT NOT NULL DEFAULT '',
|
|
valid_to TEXT NOT NULL DEFAULT '',
|
|
expires_at TEXT NOT NULL DEFAULT ''
|
|
)`
|
|
|
|
const createMemoryItemsPersonaIndex = `
|
|
CREATE INDEX IF NOT EXISTS idx_memory_items_persona_id
|
|
ON memory_items (persona_id)`
|
|
|
|
const createMemoryItemsPersonaCreatedIndex = `
|
|
CREATE INDEX IF NOT EXISTS idx_memory_items_persona_id_created_at
|
|
ON memory_items (persona_id, created_at)`
|