0012_materialized_projection_documents.up.sql (1342B)
1 CREATE TABLE radroots_runtime_projection_documents ( 2 projection_id TEXT NOT NULL CHECK(length(projection_id) BETWEEN 1 AND 128), 3 generation BLOB NOT NULL CHECK(length(generation) = 32), 4 document_key TEXT NOT NULL CHECK(length(document_key) BETWEEN 1 AND 512), 5 value BLOB NOT NULL CHECK(length(value) BETWEEN 1 AND 16777216), 6 value_sha256 BLOB NOT NULL CHECK(length(value_sha256) = 32), 7 PRIMARY KEY(projection_id, generation, document_key) 8 ) STRICT, WITHOUT ROWID; 9 10 CREATE TABLE radroots_runtime_projection_snapshots ( 11 projection_id TEXT NOT NULL CHECK(length(projection_id) BETWEEN 1 AND 128), 12 snapshot_id BLOB NOT NULL CHECK(length(snapshot_id) = 32), 13 generation BLOB NOT NULL CHECK(length(generation) = 32), 14 created_at_unix_ms INTEGER NOT NULL CHECK(created_at_unix_ms > 0), 15 value BLOB NOT NULL CHECK(length(value) BETWEEN 1 AND 16777216), 16 value_sha256 BLOB NOT NULL CHECK(length(value_sha256) = 32), 17 PRIMARY KEY(projection_id, snapshot_id) 18 ) STRICT, WITHOUT ROWID; 19 20 CREATE INDEX radroots_runtime_projection_snapshots_created_idx 21 ON radroots_runtime_projection_snapshots(projection_id, created_at_unix_ms, snapshot_id); 22 23 CREATE TRIGGER radroots_runtime_projection_snapshots_update_guard 24 BEFORE UPDATE ON radroots_runtime_projection_snapshots 25 BEGIN 26 SELECT RAISE(ABORT, 'projection snapshots are immutable'); 27 END;