at main 66 lines 2.1 kB view raw
1-- Edit graph storage (roots and diffs) 2-- Supports DAG structure for future merge support 3 4CREATE TABLE edit_nodes ( 5 -- Edit record identity (decomposed) 6 did TEXT NOT NULL, 7 collection TEXT NOT NULL, -- 'sh.weaver.edit.root' or 'sh.weaver.edit.diff' 8 rkey TEXT NOT NULL, 9 10 -- Resource being edited (decomposed) 11 resource_did TEXT NOT NULL, 12 resource_collection TEXT NOT NULL, 13 resource_rkey TEXT NOT NULL, 14 15 node_type TEXT NOT NULL, -- 'root' | 'diff' 16 created_at TEXT NOT NULL, 17 indexed_at TEXT NOT NULL, 18 19 PRIMARY KEY (did, collection, rkey) 20); 21 22CREATE INDEX idx_edit_nodes_resource ON edit_nodes(resource_did, resource_collection, resource_rkey); 23CREATE INDEX idx_edit_nodes_author ON edit_nodes(did); 24 25-- Edit graph edges (supports DAG) 26CREATE TABLE edit_edges ( 27 -- Child reference (decomposed) 28 child_did TEXT NOT NULL, 29 child_collection TEXT NOT NULL, 30 child_rkey TEXT NOT NULL, 31 32 -- Parent reference (decomposed) 33 parent_did TEXT NOT NULL, 34 parent_collection TEXT NOT NULL, 35 parent_rkey TEXT NOT NULL, 36 37 edge_type TEXT NOT NULL, -- 'prev' | 'merge' (future) 38 39 PRIMARY KEY (child_did, child_collection, child_rkey, parent_did, parent_collection, parent_rkey), 40 FOREIGN KEY (child_did, child_collection, child_rkey) REFERENCES edit_nodes(did, collection, rkey), 41 FOREIGN KEY (parent_did, parent_collection, parent_rkey) REFERENCES edit_nodes(did, collection, rkey) 42); 43 44CREATE INDEX idx_edit_edges_parent ON edit_edges(parent_did, parent_collection, parent_rkey); 45 46-- Fast path: track current head per resource 47CREATE TABLE edit_heads ( 48 -- Resource identity (decomposed) 49 resource_did TEXT NOT NULL, 50 resource_collection TEXT NOT NULL, 51 resource_rkey TEXT NOT NULL, 52 53 -- Latest root reference (decomposed) 54 root_did TEXT, 55 root_collection TEXT, 56 root_rkey TEXT, 57 58 -- Current head reference (decomposed) 59 head_did TEXT, 60 head_collection TEXT, 61 head_rkey TEXT, 62 63 updated_at TEXT NOT NULL, 64 65 PRIMARY KEY (resource_did, resource_collection, resource_rkey) 66);