lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

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;