refactor: rename memory_entity→knowledge_node, knowledge graph edge→knowledge_edge
CI / CI (pull_request) Failing after 11m15s

Resolves table name collision between:
- memory_edge (provenance DAG: child_sha/parent_sha) — KEPT
- knowledge_edge (knowledge graph: source_id/target_id) — NEW NAME

Changes:
- memory_entity → knowledge_node (all .rs + migrations 003-009)
- knowledge graph memory_edge → knowledge_edge
- memory_entity_version → knowledge_node_version
- memory_edge_version → knowledge_edge_version
- Added knowledge_node + knowledge_edge to init_schema()
- Converted versioning.rs from sqlx::query_as! to runtime queries
  (avoids stale sqlx offline cache dependency)
- Fixed UUID cast: $1::UUID for String→UUID column binds
- Fixed column names: source_entity_id→source_id, target_entity_id→target_id

Production DB: knowledge_node + knowledge_edge tables created,
memory_entity VIEW points to knowledge_node for backward compat.
This commit is contained in:
2026-09-15 15:22:41 +09:00
parent b514c43d6b
commit 7d49a2aaef
36 changed files with 263 additions and 283 deletions
+24 -24
View File
@@ -41,53 +41,53 @@ CREATE INDEX IF NOT EXISTS idx_memory_projects_visibility
-- 2. Add attribution columns to entities
-- ─────────────────────────────────────────────────────────────────────────────
ALTER TABLE memory_entity ADD COLUMN IF NOT EXISTS (
ALTER TABLE knowledge_node ADD COLUMN IF NOT EXISTS (
contributed_by VARCHAR(255), -- JWT "sub" who added this
contribution_type VARCHAR(50), -- "extracted" | "manual" | "inferred"
contribution_date TIMESTAMPTZ
);
-- Populate contributed_by with defaults (assume "system" if not present)
UPDATE memory_entity
UPDATE knowledge_node
SET contributed_by = 'system'
WHERE contributed_by IS NULL;
ALTER TABLE memory_entity
ALTER TABLE knowledge_node
ALTER COLUMN contributed_by SET NOT NULL;
CREATE INDEX IF NOT EXISTS idx_memory_entity_contributed_by
ON memory_entity(contributed_by);
CREATE INDEX IF NOT EXISTS idx_knowledge_node_contributed_by
ON knowledge_node(contributed_by);
CREATE INDEX IF NOT EXISTS idx_memory_entity_contribution_date
ON memory_entity(contribution_date)
CREATE INDEX IF NOT EXISTS idx_knowledge_node_contribution_date
ON knowledge_node(contribution_date)
WHERE contribution_date IS NOT NULL;
-- ─────────────────────────────────────────────────────────────────────────────
-- 3. Add attribution columns to edges
-- ─────────────────────────────────────────────────────────────────────────────
ALTER TABLE memory_edge ADD COLUMN IF NOT EXISTS (
ALTER TABLE knowledge_edge ADD COLUMN IF NOT EXISTS (
contributed_by VARCHAR(255), -- JWT "sub" who added this
contribution_type VARCHAR(50) -- "extracted" | "inferred"
);
-- Populate contributed_by with defaults
UPDATE memory_edge
UPDATE knowledge_edge
SET contributed_by = 'system'
WHERE contributed_by IS NULL;
ALTER TABLE memory_edge
ALTER TABLE knowledge_edge
ALTER COLUMN contributed_by SET NOT NULL;
CREATE INDEX IF NOT EXISTS idx_memory_edge_contributed_by
ON memory_edge(contributed_by);
CREATE INDEX IF NOT EXISTS idx_knowledge_edge_contributed_by
ON knowledge_edge(contributed_by);
-- ─────────────────────────────────────────────────────────────────────────────
-- 4. Add project_id to entities and edges (optional, for faster filtering)
-- ─────────────────────────────────────────────────────────────────────────────
-- ALTER TABLE memory_entity ADD COLUMN IF NOT EXISTS project_id VARCHAR(255);
-- ALTER TABLE memory_edge ADD COLUMN IF NOT EXISTS project_id VARCHAR(255);
-- ALTER TABLE knowledge_node ADD COLUMN IF NOT EXISTS project_id VARCHAR(255);
-- ALTER TABLE knowledge_edge ADD COLUMN IF NOT EXISTS project_id VARCHAR(255);
--
-- Note: Deferred. Can use project info from path/source instead.
@@ -102,7 +102,7 @@ SELECT
COUNT(*) as entity_count,
MAX(contribution_date) as last_contribution,
ARRAY_AGG(DISTINCT contribution_type) as contribution_types
FROM memory_entity
FROM knowledge_node
WHERE contribution_date IS NOT NULL
GROUP BY contributed_by;
@@ -112,7 +112,7 @@ SELECT
contributed_by,
COUNT(*) as count,
MAX(contribution_date) as latest
FROM memory_entity
FROM knowledge_node
WHERE contribution_date > CURRENT_TIMESTAMP - INTERVAL '7 days'
GROUP BY contributed_by;
@@ -129,12 +129,12 @@ GROUP BY contributed_by;
-- DROP INDEX IF EXISTS idx_memory_projects_visibility;
-- DROP TABLE IF EXISTS memory_projects;
--
-- DROP INDEX IF EXISTS idx_memory_entity_contributed_by;
-- DROP INDEX IF EXISTS idx_memory_entity_contribution_date;
-- ALTER TABLE memory_entity DROP COLUMN IF EXISTS contributed_by;
-- ALTER TABLE memory_entity DROP COLUMN IF EXISTS contribution_type;
-- ALTER TABLE memory_entity DROP COLUMN IF EXISTS contribution_date;
-- DROP INDEX IF EXISTS idx_knowledge_node_contributed_by;
-- DROP INDEX IF EXISTS idx_knowledge_node_contribution_date;
-- ALTER TABLE knowledge_node DROP COLUMN IF EXISTS contributed_by;
-- ALTER TABLE knowledge_node DROP COLUMN IF EXISTS contribution_type;
-- ALTER TABLE knowledge_node DROP COLUMN IF EXISTS contribution_date;
--
-- DROP INDEX IF EXISTS idx_memory_edge_contributed_by;
-- ALTER TABLE memory_edge DROP COLUMN IF EXISTS contributed_by;
-- ALTER TABLE memory_edge DROP COLUMN IF EXISTS contribution_type;
-- DROP INDEX IF EXISTS idx_knowledge_edge_contributed_by;
-- ALTER TABLE knowledge_edge DROP COLUMN IF EXISTS contributed_by;
-- ALTER TABLE knowledge_edge DROP COLUMN IF EXISTS contribution_type;