SQL

CREATE TABLE frames (
  id INT,
  video_chunk_id INT,
  offset_index INT,
  timestamp NUM,
  name TEXT,
  app_name TEXT,
  window_name TEXT,
  focused NUM,
  browser_url TEXT,
  device_name TEXT,
  sync_id TEXT,
  machine_id TEXT,
  synced_at NUM,
  snapshot_path TEXT,
  accessibility_text TEXT,
  accessibility_tree_json TEXT,
  content_hash INT,
  simhash INT,
  capture_trigger TEXT,
  text_source TEXT,
  cloud_blob_id TEXT,
  full_text TEXT,
  elements_ref_frame_id INT,
  document_path TEXT,
  accessibility_redacted_at INT,
  image_redacted_at INT
)

Columns

Column Data type Allow null Primary key Actions
id INT read-only
video_chunk_id INT read-only
offset_index INT read-only
timestamp NUM read-only
name TEXT read-only
app_name TEXT read-only
window_name TEXT read-only
focused NUM read-only
browser_url TEXT read-only
device_name TEXT read-only
sync_id TEXT read-only
machine_id TEXT read-only
synced_at NUM read-only
snapshot_path TEXT read-only
accessibility_text TEXT read-only
accessibility_tree_json TEXT read-only
content_hash INT read-only
simhash INT read-only
capture_trigger TEXT read-only
text_source TEXT read-only
cloud_blob_id TEXT read-only
full_text TEXT read-only
elements_ref_frame_id INT read-only
document_path TEXT read-only
accessibility_redacted_at INT read-only
image_redacted_at INT read-only

Indexes

Name Columns Unique SQL Drop?
idx_frames_accessibility_redacted_at accessibility_redacted_at SQL
CREATE INDEX idx_frames_accessibility_redacted_at
ON frames(accessibility_redacted_at)
read-only
idx_frames_app_name app_name SQL
CREATE INDEX idx_frames_app_name
ON frames(app_name)
read-only
idx_frames_sync_id sync_id SQL
CREATE INDEX idx_frames_sync_id
ON frames(sync_id) WHERE sync_id IS NOT NULL
read-only
idx_frames_timestamp timestamp SQL
CREATE INDEX idx_frames_timestamp
ON frames(timestamp)
read-only
idx_frames_video_chunk_id video_chunk_id SQL
CREATE INDEX idx_frames_video_chunk_id
ON frames(video_chunk_id)
read-only
idx_frames_window_name window_name SQL
CREATE INDEX idx_frames_window_name
ON frames(window_name)
read-only

Triggers

Name SQL Drop?
frames_ad SQL
CREATE TRIGGER frames_ad AFTER DELETE ON frames
WHEN OLD.full_text IS NOT NULL AND OLD.full_text != ''
BEGIN
    INSERT INTO frames_fts(frames_fts, rowid, full_text, app_name, window_name, browser_url)
    VALUES (
        'delete',
        OLD.id,
        OLD.full_text,
        COALESCE(OLD.app_name, ''),
        COALESCE(OLD.window_name, ''),
        COALESCE(OLD.browser_url, '')
    );
END
read-only
frames_ai SQL
CREATE TRIGGER frames_ai AFTER INSERT ON frames
WHEN NEW.full_text IS NOT NULL AND NEW.full_text != ''
BEGIN
    INSERT INTO frames_fts(rowid, full_text, app_name, window_name, browser_url)
    VALUES (
        NEW.id,
        NEW.full_text,
        COALESCE(NEW.app_name, ''),
        COALESCE(NEW.window_name, ''),
        COALESCE(NEW.browser_url, '')
    );
END
read-only
frames_au SQL
CREATE TRIGGER frames_au AFTER UPDATE OF full_text, app_name, window_name, browser_url ON frames
BEGIN
    -- remove old tokens if the old row was indexed
    INSERT INTO frames_fts(frames_fts, rowid, full_text, app_name, window_name, browser_url)
    SELECT
        'delete',
        OLD.id,
        OLD.full_text,
        COALESCE(OLD.app_name, ''),
        COALESCE(OLD.window_name, ''),
        COALESCE(OLD.browser_url, '')
    WHERE OLD.full_text IS NOT NULL AND OLD.full_text != '';

    -- insert new tokens if the new row should be indexed
    INSERT INTO frames_fts(rowid, full_text, app_name, window_name, browser_url)
    SELECT
        NEW.id,
        NEW.full_text,
        COALESCE(NEW.app_name, ''),
        COALESCE(NEW.window_name, ''),
        COALESCE(NEW.browser_url, '')
    WHERE NEW.full_text IS NOT NULL AND NEW.full_text != '';
END
read-only