openvibers/openvibe.community Commits

N-1 fixtures re-recorded from 8f021e6, the release now in production (npm run n-1:record): the first on PostgreSQL, so worker.json lists its migration files for the next release to keep.

OP OpenVibers committed 28 Sept 2026 · 3b3391fdff · 2 files, +19 −277


Changes

ddiff --git a/test/fixtures/n-1/client.json b/test/fixtures/n-1/client.json
iindex a6e70c6..a604bd0 100644
---- a/test/fixtures/n-1/client.json
++++ b/test/fixtures/n-1/client.json
@@@ -1,28 +1,28 @@
{
"service": "community",
-- "release": "82e2bb941f5cae0515c6696e6490bfdd9f7e1437",
-- "recorded_at": "2026-09-27T23:24:25.749Z",
++ "release": "8f021e6e7a443b5c61340a826ac54c47269b6560",
++ "recorded_at": "2026-09-28T19:42:43.241Z",
"note": "N-1 fixture: written by `npm run n-1:record`, replayed by test/n-1.test.js",
"manifest": {
"service": "community",
-- "release": "82e2bb941f5c",
-- "released_at": "2026-09-27T22:59:26.000Z",
-- "booted_at": "2026-09-27T23:24:24.819Z",
-- "contracts_version": "0.71.0",
++ "release": "8f021e6e7a44",
++ "released_at": "2026-09-28T19:33:24.000Z",
++ "booted_at": "2026-09-28T19:42:42.412Z",
++ "contracts_version": "0.76.0",
"packages": {
-- "openvibe-shared": "1.22.0",
-- "openvibe-sdk": "0.11.0"
++ "openvibe-shared": "1.28.0",
++ "openvibe-sdk": "0.21.0"
},
"min_client_release": null,
"mixed_version_window_hours": 24,
"components": {
"shell": {
"kind": "script",
-- "version": "82e2bb941f5c"
++ "version": "8f021e6e7a44"
},
"server": {
"kind": "server",
-- "version": "82e2bb941f5c"
++ "version": "8f021e6e7a44"
}
},
"assets": {},
ddiff --git a/test/fixtures/n-1/worker.json b/test/fixtures/n-1/worker.json
iindex 4fb6541..7e7c32f 100644
---- a/test/fixtures/n-1/worker.json
++++ b/test/fixtures/n-1/worker.json
@@@ -1,272 +1,14 @@
{
"service": "community",
-- "release": "82e2bb941f5cae0515c6696e6490bfdd9f7e1437",
-- "recorded_at": "2026-09-27T23:24:25.749Z",
++ "release": "8f021e6e7a443b5c61340a826ac54c47269b6560",
++ "recorded_at": "2026-09-28T19:42:43.241Z",
"note": "N-1 fixture: written by `npm run n-1:record`, replayed by test/n-1.test.js",
-- "user_version": 0,
-- "schema": [
-- "CREATE TABLE attachments (\n media_id TEXT PRIMARY KEY,\n owner_subject TEXT NOT NULL,\n post_id INTEGER REFERENCES posts(id) ON DELETE CASCADE,\n position INTEGER NOT NULL DEFAULT 0,\n filename TEXT,\n mime TEXT NOT NULL,\n size_bytes INTEGER NOT NULL,\n url TEXT NOT NULL,\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP\n)",
-- "CREATE TABLE categories (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n space_id INTEGER NOT NULL REFERENCES spaces(id) ON DELETE CASCADE,\n slug TEXT NOT NULL,\n name TEXT NOT NULL,\n description TEXT,\n position INTEGER NOT NULL DEFAULT 0,\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n UNIQUE (space_id, slug)\n)",
-- "CREATE TABLE comment_threads (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n ref_service TEXT NOT NULL,\n ref_type TEXT NOT NULL,\n ref_id TEXT NOT NULL,\n ref_label TEXT, -- cached display label from a service; never authoritative\n visibility TEXT NOT NULL DEFAULT 'public' CHECK(visibility IN ('public', 'hidden', 'locked')),\n comment_count INTEGER NOT NULL DEFAULT 0,\n created_by TEXT, -- subject or service principal that first resolved it\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n access_id TEXT, -- unguessable handle for browsers (migrate() fills old rows, unique index)\n UNIQUE (ref_service, ref_type, ref_id)\n)",
-- "CREATE TABLE comment_votes (\n comment_id INTEGER NOT NULL REFERENCES comments(id) ON DELETE CASCADE,\n subject_id TEXT NOT NULL,\n value INTEGER NOT NULL CHECK(value IN (-1, 1)),\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n PRIMARY KEY (comment_id, subject_id)\n)",
-- "CREATE TABLE comments (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n thread_id INTEGER NOT NULL REFERENCES comment_threads(id) ON DELETE CASCADE,\n parent_id INTEGER REFERENCES comments(id) ON DELETE CASCADE,\n author_subject TEXT,\n anon_name TEXT,\n origin TEXT NOT NULL DEFAULT 'user' CHECK(origin IN ('user', 'ai')),\n message TEXT NOT NULL,\n score INTEGER NOT NULL DEFAULT 0,\n upvotes INTEGER NOT NULL DEFAULT 0,\n downvotes INTEGER NOT NULL DEFAULT 0,\n reply_count INTEGER NOT NULL DEFAULT 0,\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n deleted_at DATETIME,\n deleted_by TEXT,\n edited_at DATETIME -- the author last changed the text (migrate() adds it to older databases)\n)",
-- "CREATE TABLE community_event_inbox (\n consumer TEXT NOT NULL,\n event_id TEXT NOT NULL,\n processed_at INTEGER NOT NULL,\n PRIMARY KEY (consumer, event_id)\n )",
-- "CREATE TABLE game_progress (\n subject_id TEXT PRIMARY KEY,\n level INTEGER NOT NULL,\n updated_at TEXT NOT NULL\n)",
-- "CREATE TABLE import_hold (\n source_type TEXT NOT NULL,\n source_id TEXT NOT NULL,\n reason TEXT NOT NULL,\n detail TEXT,\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n PRIMARY KEY (source_type, source_id, reason)\n)",
-- "CREATE TABLE legacy_id_map (\n source_system TEXT NOT NULL,\n source_type TEXT NOT NULL,\n source_id TEXT NOT NULL,\n target_type TEXT NOT NULL,\n target_id TEXT NOT NULL,\n PRIMARY KEY (source_system, source_type, source_id)\n)",
-- "CREATE TABLE migration_runs (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n source TEXT NOT NULL,\n started_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n finished_at DATETIME,\n report TEXT\n)",
-- "CREATE TABLE paste_comments (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n paste_id INTEGER NOT NULL REFERENCES pastes(id) ON DELETE CASCADE,\n author_subject TEXT,\n anon_name TEXT,\n parent_id INTEGER REFERENCES paste_comments(id) ON DELETE CASCADE,\n message TEXT NOT NULL,\n is_deleted INTEGER NOT NULL DEFAULT 0,\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n legacy_media_id INTEGER UNIQUE\n)",
-- "CREATE TABLE paste_likes (\n paste_id INTEGER NOT NULL REFERENCES pastes(id) ON DELETE CASCADE,\n subject_id TEXT NOT NULL,\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n PRIMARY KEY (paste_id, subject_id)\n)",
-- "CREATE TABLE paste_versions (\n paste_id INTEGER NOT NULL REFERENCES pastes(id) ON DELETE CASCADE,\n revision INTEGER NOT NULL,\n title TEXT,\n content TEXT,\n language TEXT,\n edited_by TEXT,\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n PRIMARY KEY (paste_id, revision)\n)",
-- "CREATE TABLE paste_visits (\n paste_id INTEGER NOT NULL REFERENCES pastes(id) ON DELETE CASCADE,\n visitor TEXT NOT NULL,\n first_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n last_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n visits INTEGER NOT NULL DEFAULT 1,\n PRIMARY KEY (paste_id, visitor)\n)",
-- "CREATE TABLE pastes (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n slug TEXT UNIQUE NOT NULL,\n owner_subject TEXT,\n origin TEXT NOT NULL DEFAULT 'user' CHECK(origin IN ('user', 'ai', 'imported')),\n type TEXT NOT NULL DEFAULT 'paste' CHECK(type IN ('paste', 'screenshot')),\n title TEXT NOT NULL DEFAULT 'Untitled',\n content TEXT,\n language TEXT DEFAULT 'text',\n visibility TEXT NOT NULL DEFAULT 'public' CHECK(visibility IN ('public', 'unlisted', 'private')),\n screenshot_url TEXT,\n media_ref TEXT,\n stream_ref TEXT, -- JSON EntityRef, e.g. {\"service\":\"live\",\"type\":\"stream\",\"id\":\"123\"}\n metadata TEXT, -- JSON\n burn_after_read INTEGER NOT NULL DEFAULT 0,\n forked_from INTEGER REFERENCES pastes(id) ON DELETE SET NULL,\n pinned INTEGER NOT NULL DEFAULT 0,\n views INTEGER NOT NULL DEFAULT 0,\n unique_views INTEGER NOT NULL DEFAULT 0,\n copies INTEGER NOT NULL DEFAULT 0,\n likes INTEGER NOT NULL DEFAULT 0,\n is_nsfw INTEGER NOT NULL DEFAULT 0,\n ai_summary TEXT,\n ai_tags TEXT, -- JSON array\n ai_analyzed_at DATETIME,\n revision INTEGER NOT NULL DEFAULT 1,\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n deleted_at DATETIME,\n legacy_media_id INTEGER UNIQUE,\n legacy_user_id INTEGER\n)",
-- "CREATE TABLE post_pastes (\n post_id INTEGER NOT NULL REFERENCES posts(id) ON DELETE CASCADE,\n paste_id INTEGER NOT NULL REFERENCES pastes(id) ON DELETE CASCADE,\n position INTEGER NOT NULL DEFAULT 0,\n PRIMARY KEY (post_id, paste_id)\n)",
-- "CREATE TABLE post_reactions (\n post_id INTEGER NOT NULL REFERENCES posts(id) ON DELETE CASCADE,\n subject_id TEXT NOT NULL,\n reaction TEXT NOT NULL,\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n PRIMARY KEY (post_id, subject_id)\n)",
-- "CREATE TABLE post_versions (\n post_id INTEGER NOT NULL REFERENCES posts(id) ON DELETE CASCADE,\n revision INTEGER NOT NULL,\n body_markdown TEXT NOT NULL,\n edited_by TEXT,\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n PRIMARY KEY (post_id, revision)\n)",
-- "CREATE TABLE posts (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n thread_id INTEGER NOT NULL REFERENCES threads(id) ON DELETE CASCADE,\n author_subject TEXT,\n origin TEXT NOT NULL DEFAULT 'user' CHECK(origin IN ('user', 'ai', 'discord', 'system')),\n is_opening INTEGER NOT NULL DEFAULT 0,\n body_markdown TEXT NOT NULL,\n revision INTEGER NOT NULL DEFAULT 1,\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n deleted_at DATETIME\n, relay_author TEXT)",
-- "CREATE TABLE pulse_items (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n source_service TEXT NOT NULL,\n source_type TEXT NOT NULL,\n source_id TEXT NOT NULL,\n title TEXT NOT NULL,\n url TEXT NOT NULL,\n actor_subject TEXT,\n origin TEXT NOT NULL CHECK(origin IN ('user', 'ai', 'system')),\n visibility TEXT NOT NULL DEFAULT 'public' CHECK(visibility IN ('public')),\n occurred_at DATETIME NOT NULL,\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n UNIQUE (source_service, source_type, source_id)\n)",
-- "CREATE TABLE relay_cursors (\n name TEXT PRIMARY KEY,\n cursor INTEGER NOT NULL,\n latest_seq INTEGER,\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP\n)",
-- "CREATE TABLE relay_deliveries (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n thread_id INTEGER NOT NULL REFERENCES threads(id) ON DELETE CASCADE,\n post_id INTEGER REFERENCES posts(id) ON DELETE CASCADE,\n mapping_id INTEGER NOT NULL REFERENCES relay_mappings(id) ON DELETE CASCADE,\n action TEXT NOT NULL DEFAULT 'create' CHECK(action IN ('create', 'edit', 'delete')),\n dedupe_key TEXT UNIQUE NOT NULL,\n source TEXT NOT NULL DEFAULT 'direct' CHECK(source IN ('direct', 'events')),\n event_id TEXT,\n status TEXT NOT NULL DEFAULT 'pending' CHECK(status IN ('pending', 'delivered', 'failed', 'dropped', 'skipped')),\n attempts INTEGER NOT NULL DEFAULT 0,\n next_attempt_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n last_status INTEGER,\n last_error TEXT,\n delivered_at DATETIME,\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP\n)",
-- "CREATE TABLE relay_inbound_failures (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n mapping_id INTEGER REFERENCES relay_mappings(id) ON DELETE SET NULL,\n event TEXT NOT NULL,\n external_channel_id TEXT,\n external_message_id TEXT,\n external_author_id TEXT,\n error TEXT NOT NULL,\n dismissed_at DATETIME,\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP\n)",
-- "CREATE TABLE relay_mappings (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n space_id INTEGER NOT NULL REFERENCES spaces(id) ON DELETE CASCADE,\n direction TEXT NOT NULL DEFAULT 'out' CHECK(direction IN ('out')),\n webhook_url_ref TEXT NOT NULL,\n enabled INTEGER NOT NULL DEFAULT 1,\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, discord_channel_id TEXT, discord_thread_id TEXT, inbound INTEGER NOT NULL DEFAULT 0,\n UNIQUE (space_id, direction, webhook_url_ref)\n)",
-- "CREATE TABLE relay_message_map (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n platform TEXT NOT NULL DEFAULT 'discord' CHECK(platform IN ('discord')),\n mapping_id INTEGER NOT NULL REFERENCES relay_mappings(id) ON DELETE CASCADE,\n direction TEXT NOT NULL CHECK(direction IN ('out', 'in')),\n local_type TEXT NOT NULL CHECK(local_type IN ('thread', 'post')),\n local_id INTEGER NOT NULL,\n thread_id INTEGER NOT NULL REFERENCES threads(id) ON DELETE CASCADE,\n external_channel_id TEXT NOT NULL,\n external_thread_id TEXT,\n external_message_id TEXT NOT NULL,\n external_webhook_id TEXT,\n external_deleted_at DATETIME,\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n UNIQUE (platform, external_message_id),\n UNIQUE (platform, mapping_id, local_type, local_id)\n)",
-- "CREATE TABLE space_chat_rooms (\n space_id INTEGER PRIMARY KEY REFERENCES spaces(id) ON DELETE CASCADE,\n room_id INTEGER,\n room_slug TEXT NOT NULL,\n room_name TEXT NOT NULL,\n room_kind TEXT NOT NULL DEFAULT 'community',\n room_visibility TEXT NOT NULL DEFAULT 'public',\n attached_by TEXT,\n attached_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP\n)",
-- "CREATE TABLE space_groups (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n slug TEXT UNIQUE NOT NULL,\n name TEXT NOT NULL,\n description TEXT,\n position INTEGER NOT NULL DEFAULT 0\n)",
-- "CREATE TABLE spaces (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n slug TEXT UNIQUE NOT NULL,\n name TEXT NOT NULL,\n description TEXT,\n visibility TEXT NOT NULL DEFAULT 'public' CHECK(visibility IN ('public', 'members', 'staff')),\n created_by TEXT,\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP\n, members_only_owner TEXT, thread_kind TEXT NOT NULL DEFAULT 'discussion', style TEXT NOT NULL DEFAULT 'feed', votes INTEGER NOT NULL DEFAULT 1, reactions INTEGER NOT NULL DEFAULT 1, group_id INTEGER REFERENCES space_groups(id) ON DELETE SET NULL, parent_id INTEGER REFERENCES spaces(id) ON DELETE SET NULL, position INTEGER NOT NULL DEFAULT 0)",
-- "CREATE TABLE subject_projection (\n subject_id TEXT PRIMARY KEY,\n username TEXT,\n display_name TEXT,\n avatar_url TEXT,\n profile_color TEXT,\n refreshed_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP\n)",
-- "CREATE TABLE thread_votes (\n thread_id INTEGER NOT NULL REFERENCES threads(id) ON DELETE CASCADE,\n subject_id TEXT NOT NULL,\n value INTEGER NOT NULL CHECK(value IN (-1, 1)),\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n PRIMARY KEY (thread_id, subject_id)\n)",
-- "CREATE TABLE threads (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n space_id INTEGER NOT NULL REFERENCES spaces(id) ON DELETE CASCADE,\n slug TEXT NOT NULL,\n title TEXT NOT NULL,\n author_subject TEXT,\n origin TEXT NOT NULL DEFAULT 'user' CHECK(origin IN ('user', 'ai', 'discord', 'system')),\n pinned INTEGER NOT NULL DEFAULT 0,\n locked INTEGER NOT NULL DEFAULT 0,\n score INTEGER NOT NULL DEFAULT 0,\n reply_count INTEGER NOT NULL DEFAULT 0,\n last_activity_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n deleted_at DATETIME, members_only_owner TEXT, kind TEXT NOT NULL DEFAULT 'discussion', status TEXT, category_id INTEGER REFERENCES categories(id) ON DELETE SET NULL, external_key TEXT, views INTEGER NOT NULL DEFAULT 0, crosspost_of INTEGER REFERENCES threads(id) ON DELETE SET NULL,\n UNIQUE (space_id, slug)\n)",
-- "CREATE TABLE token_revocations (\n subject_id TEXT PRIMARY KEY,\n valid_after_ms INTEGER NOT NULL,\n reason TEXT,\n updated_at INTEGER NOT NULL\n )",
-- "CREATE INDEX idx_attachments_post ON attachments(post_id, position) WHERE post_id IS NOT NULL",
-- "CREATE UNIQUE INDEX idx_comment_threads_access ON comment_threads(access_id)",
-- "CREATE INDEX idx_comments_parent ON comments(parent_id, id)",
-- "CREATE INDEX idx_comments_thread ON comments(thread_id, parent_id, id)",
-- "CREATE INDEX idx_paste_comments_paste ON paste_comments(paste_id, parent_id)",
-- "CREATE INDEX idx_paste_visits_last ON paste_visits(last_at)",
-- "CREATE INDEX idx_pastes_forked ON pastes(forked_from)",
-- "CREATE INDEX idx_pastes_listing ON pastes(visibility, created_at DESC) WHERE deleted_at IS NULL",
-- "CREATE INDEX idx_pastes_owner ON pastes(owner_subject, created_at DESC)",
-- "CREATE INDEX idx_post_reactions_post ON post_reactions(post_id, reaction)",
-- "CREATE INDEX idx_posts_author ON posts(author_subject, created_at DESC)",
-- "CREATE INDEX idx_posts_thread ON posts(thread_id, id)",
-- "CREATE INDEX idx_pulse_origin ON pulse_items(origin, occurred_at DESC, id DESC)",
-- "CREATE INDEX idx_pulse_recent ON pulse_items(occurred_at DESC, id DESC)",
-- "CREATE INDEX idx_relay_deliveries_due ON relay_deliveries(status, next_attempt_at)",
-- "CREATE INDEX idx_relay_deliveries_thread ON relay_deliveries(thread_id, post_id)",
-- "CREATE INDEX idx_relay_mappings_channel ON relay_mappings(discord_channel_id) WHERE discord_channel_id IS NOT NULL",
-- "CREATE INDEX idx_relay_message_map_thread ON relay_message_map(thread_id)",
-- "CREATE INDEX idx_subject_projection_username ON subject_projection(username COLLATE NOCASE)",
-- "CREATE INDEX idx_threads_author ON threads(author_subject, created_at DESC)",
-- "CREATE INDEX idx_threads_category ON threads(category_id) WHERE category_id IS NOT NULL",
-- "CREATE UNIQUE INDEX idx_threads_external_key ON threads(space_id, external_key) WHERE external_key IS NOT NULL",
-- "CREATE INDEX idx_threads_space_new ON threads(space_id, created_at DESC) WHERE deleted_at IS NULL"
++ "engine": "postgresql",
++ "migrations": [
++ {
++ "name": "0001_initial.sql",
++ "sha256": "508d5c4bdc753ad04bd17ed252dc5e8301fe6853d26bab6dcd41bd906dfc4629"
++ }
],
-- "ledger": {},
-- "lazy": [
-- "CREATE TABLE IF NOT EXISTS account_data_events ( id TEXT PRIMARY KEY, kind TEXT NOT NULL, subject TEXT NOT NULL, outcome TEXT, sent_at TEXT, applied_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')) )",
-- "CREATE TABLE IF NOT EXISTS network_blocks ( blocker_subject TEXT NOT NULL, blocked_subject TEXT NOT NULL, active INTEGER NOT NULL, revision INTEGER NOT NULL, updated_at INTEGER NOT NULL, PRIMARY KEY (blocker_subject, blocked_subject) )",
-- "CREATE TABLE IF NOT EXISTS profile_module_pushes ( subject_id TEXT PRIMARY KEY, hash TEXT NOT NULL, pushed_at DATETIME DEFAULT CURRENT_TIMESTAMP )"
-- ],
-- "statements": [
-- "DELETE FROM categories WHERE id = ?",
-- "DELETE FROM game_progress WHERE subject_id = ?",
-- "DELETE FROM import_hold WHERE source_type = ? AND source_id = ?",
-- "DELETE FROM import_hold WHERE source_type = ? AND source_id = ? AND reason IN ('ambiguous_owner', 'owner_unmapped')",
-- "DELETE FROM pastes WHERE id = ?",
-- "DELETE FROM post_reactions WHERE post_id = ? AND subject_id = ?",
-- "DELETE FROM posts WHERE id = ?",
-- "DELETE FROM pulse_items WHERE source_service = ? AND source_type = ? AND source_id = ?",
-- "DELETE FROM relay_inbound_failures WHERE id <= (SELECT MAX(id) FROM relay_inbound_failures) - ?",
-- "DELETE FROM space_chat_rooms WHERE space_id = ?",
-- "DELETE FROM threads WHERE id = ?",
-- "INSERT INTO account_data_events (id, kind, subject, outcome) VALUES (?, ?, ?, ?)",
-- "INSERT INTO attachments (media_id, owner_subject, filename, mime, size_bytes, url) VALUES (?, ?, ?, ?, ?, ?)",
-- "INSERT INTO categories (space_id, slug, name, description, position) VALUES (?, ?, ?, ?, ?) ON CONFLICT (space_id, slug) DO UPDATE SET name = excluded.name, description = excluded.description, position = excluded.position",
-- "INSERT INTO comment_threads (ref_service, ref_type, ref_id, ref_label, created_by, access_id) VALUES (?, ?, ?, ?, ?, ?) ON CONFLICT(ref_service, ref_type, ref_id) DO NOTHING",
-- "INSERT INTO comments (thread_id, parent_id, author_subject, anon_name, origin, message) VALUES (?, ?, ?, ?, ?, ?)",
-- "INSERT INTO comments (thread_id, parent_id, author_subject, anon_name, origin, message, created_at, updated_at, edited_at) VALUES (?, ?, ?, NULL, 'user', ?, ?, ?, ?)",
-- "INSERT INTO game_progress (subject_id, level, updated_at) VALUES (?, ?, ?) ON CONFLICT(subject_id) DO UPDATE SET level = MAX(game_progress.level, excluded.level), updated_at = excluded.updated_at",
-- "INSERT INTO import_hold (source_type, source_id, reason, detail) VALUES (?, ?, ?, ?) ON CONFLICT(source_type, source_id, reason) DO UPDATE SET detail = excluded.detail",
-- "INSERT INTO legacy_id_map (source_system, source_type, source_id, target_type, target_id) VALUES (?, ?, ?, 'comment', ?) ON CONFLICT(source_system, source_type, source_id) DO NOTHING",
-- "INSERT INTO migration_runs (source, finished_at, report) VALUES (?, CURRENT_TIMESTAMP, ?)",
-- "INSERT INTO migration_runs (source, started_at, finished_at, report) VALUES (?, ?, ?, ?)",
-- "INSERT INTO network_blocks (blocker_subject, blocked_subject, active, revision, updated_at) VALUES (?, ?, ?, ?, ?) ON CONFLICT(blocker_subject, blocked_subject) DO UPDATE SET active = excluded.active, revision = excluded.revision, updated_at = excluded.updated_at WHERE excluded.revision > network_blocks.revision",
-- "INSERT INTO paste_comments (paste_id, author_subject, anon_name, message, is_deleted, created_at, updated_at, legacy_media_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?)",
-- "INSERT INTO paste_visits (paste_id, visitor) VALUES (?, ?)",
-- "INSERT INTO pastes (slug, owner_subject, origin, type, title, content, language, visibility, forked_from) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)",
-- "INSERT INTO pastes (slug, owner_subject, origin, type, title, content, language, visibility, stream_ref, metadata, burn_after_read, is_nsfw) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
-- "INSERT INTO post_reactions (post_id, subject_id, reaction) VALUES (?, ?, ?) ON CONFLICT (post_id, subject_id) DO UPDATE SET reaction = excluded.reaction, created_at = CURRENT_TIMESTAMP",
-- "INSERT INTO post_versions (post_id, revision, body_markdown, edited_by) VALUES (?, ?, ?, ?)",
-- "INSERT INTO post_versions (post_id, revision, body_markdown, edited_by, created_at) VALUES (?, ?, ?, ?, ?)",
-- "INSERT INTO posts (thread_id, author_subject, origin, body_markdown, relay_author) VALUES (?, ?, ?, ?, ?)",
-- "INSERT INTO posts (thread_id, author_subject, origin, is_opening, body_markdown) VALUES (?, ?, ?, 1, ?)",
-- "INSERT INTO profile_module_pushes (subject_id, hash, pushed_at) VALUES (?, ?, CURRENT_TIMESTAMP) ON CONFLICT(subject_id) DO UPDATE SET hash = excluded.hash, pushed_at = excluded.pushed_at",
-- "INSERT INTO pulse_items (source_service, source_type, source_id, title, url, actor_subject, origin, visibility, occurred_at) VALUES (?, ?, ?, ?, ?, ?, ?, 'public', ?)",
-- "INSERT INTO relay_cursors (name, cursor, latest_seq, updated_at) VALUES (?, ?, ?, CURRENT_TIMESTAMP) ON CONFLICT(name) DO UPDATE SET cursor = excluded.cursor, latest_seq = excluded.latest_seq, updated_at = CURRENT_TIMESTAMP",
-- "INSERT INTO relay_deliveries (thread_id, post_id, mapping_id, action, dedupe_key, source, event_id, next_attempt_at) VALUES (@thread_id, @post_id, @mapping_id, @action, @key, @source, @event_id, @at) ON CONFLICT(dedupe_key) DO NOTHING",
-- "INSERT INTO relay_inbound_failures (mapping_id, event, external_channel_id, external_message_id, external_author_id, error) VALUES (?, ?, ?, ?, ?, ?)",
-- "INSERT INTO relay_message_map (platform, mapping_id, direction, local_type, local_id, thread_id, external_channel_id, external_message_id) VALUES ('discord', ?, 'in', 'post', ?, ?, ?, ?)",
-- "INSERT INTO space_chat_rooms (space_id, room_id, room_slug, room_name, room_kind, room_visibility, attached_by) VALUES (?, ?, ?, ?, ?, ?, ?) ON CONFLICT (space_id) DO UPDATE SET room_id = excluded.room_id, room_slug = excluded.room_slug, room_name = excluded.room_name, room_kind = excluded.room_kind, room_visibility = excluded.room_visibility, attached_by = CASE WHEN space_chat_rooms.room_slug = excluded.room_slug THEN space_chat_rooms.attached_by ELSE excluded.attached_by END, attached_at = CASE WHEN space_chat_rooms.room_slug = excluded.room_slug THEN space_chat_rooms.attached_at ELSE CURRENT_TIMESTAMP END",
-- "INSERT INTO space_groups (slug, name, description, position) VALUES (?, ?, ?, ?) ON CONFLICT (slug) DO UPDATE SET name = excluded.name, description = excluded.description, position = excluded.position",
-- "INSERT INTO spaces (slug, name, description, visibility, created_by, style, votes, reactions, group_id, parent_id, position, thread_kind) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
-- "INSERT INTO subject_projection (subject_id, username, display_name, avatar_url, profile_color, refreshed_at) VALUES (@subject_id, @username, @display_name, @avatar_url, @profile_color, CURRENT_TIMESTAMP) ON CONFLICT(subject_id) DO UPDATE SET username = COALESCE(excluded.username, username), display_name = COALESCE(excluded.display_name, display_name), avatar_url = COALESCE(excluded.avatar_url, avatar_url), profile_color = COALESCE(excluded.profile_color, profile_color), refreshed_at = CURRENT_TIMESTAMP",
-- "INSERT INTO threads (space_id, slug, title, author_subject, origin, members_only_owner, kind, status, category_id, external_key, crosspost_of) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
-- "INSERT INTO token_revocations (subject_id, valid_after_ms, reason, updated_at) VALUES (?, ?, ?, ?) ON CONFLICT(subject_id) DO UPDATE SET valid_after_ms = excluded.valid_after_ms, reason = excluded.reason, updated_at = excluded.updated_at WHERE excluded.valid_after_ms > token_revocations.valid_after_ms",
-- "INSERT OR IGNORE INTO categories (space_id, slug, name, description, position) SELECT id, ?, ?, ?, ? FROM spaces WHERE slug = ?",
-- "INSERT OR IGNORE INTO import_hold (source_type, source_id, reason, detail) VALUES (?, ?, ?, ?)",
-- "INSERT OR IGNORE INTO paste_likes (paste_id, subject_id, created_at) VALUES (?, ?, ?)",
-- "INSERT OR IGNORE INTO post_pastes (post_id, paste_id, position) VALUES (?, ?, ?)",
-- "INSERT OR REPLACE INTO account_data_events (id, kind, subject, outcome, sent_at) VALUES (?, ?, ?, ?, ?)",
-- "SELECT * FROM account_data_events WHERE id = ?",
-- "SELECT * FROM attachments WHERE media_id = ?",
-- "SELECT * FROM attachments WHERE post_id IN (?) ORDER BY post_id, position",
-- "SELECT * FROM categories WHERE id = ?",
-- "SELECT * FROM categories WHERE space_id = ? AND slug = ?",
-- "SELECT * FROM comment_threads WHERE access_id = ?",
-- "SELECT * FROM comment_threads WHERE id = ?",
-- "SELECT * FROM comment_threads WHERE ref_service = ? AND ref_type = ? AND ref_id = ?",
-- "SELECT * FROM comments WHERE id = ?",
-- "SELECT * FROM comments WHERE parent_id = ? AND deleted_at IS NULL ORDER BY id ASC LIMIT ?",
-- "SELECT * FROM comments WHERE thread_id = ? AND parent_id IS NULL AND (deleted_at IS NULL OR reply_count > 0) ORDER BY id DESC LIMIT ?",
-- "SELECT * FROM paste_comments WHERE legacy_media_id = ?",
-- "SELECT * FROM paste_comments WHERE parent_id = ? AND is_deleted = 0 ORDER BY created_at ASC, id ASC",
-- "SELECT * FROM paste_comments WHERE paste_id = ? AND is_deleted = 0 AND parent_id IS NULL ORDER BY created_at DESC, id DESC LIMIT ? OFFSET ?",
-- "SELECT * FROM pastes",
-- "SELECT * FROM pastes WHERE (updated_at >= @from AND updated_at < @to) OR (deleted_at >= @from AND deleted_at < @to) OR (created_at >= @from AND created_at < @to)",
-- "SELECT * FROM pastes WHERE deleted_at IS NULL AND owner_subject = ? ORDER BY pinned DESC, created_at DESC, id DESC LIMIT ? OFFSET ?",
-- "SELECT * FROM pastes WHERE deleted_at IS NULL AND visibility = 'public' AND burn_after_read = 0 AND owner_subject = ? ORDER BY pinned DESC, created_at DESC, id DESC LIMIT ? OFFSET ?",
-- "SELECT * FROM pastes WHERE deleted_at IS NULL AND visibility = 'public' AND burn_after_read = 0 AND type = ? ORDER BY pinned DESC, created_at DESC, id DESC LIMIT ? OFFSET ?",
-- "SELECT * FROM pastes WHERE deleted_at IS NULL AND visibility = 'public' AND burn_after_read = 0 ORDER BY pinned DESC, created_at DESC, id DESC LIMIT ? OFFSET ?",
-- "SELECT * FROM pastes WHERE id = ? AND deleted_at IS NULL",
-- "SELECT * FROM pastes WHERE legacy_media_id = ?",
-- "SELECT * FROM pastes WHERE slug = ? AND deleted_at IS NULL",
-- "SELECT * FROM posts WHERE id = ?",
-- "SELECT * FROM posts WHERE thread_id = ? ORDER BY id ASC LIMIT ? OFFSET ?",
-- "SELECT * FROM pulse_items WHERE source_service = ? AND source_type = ? AND source_id = ?",
-- "SELECT * FROM relay_mappings WHERE id = ?",
-- "SELECT * FROM relay_message_map WHERE platform = 'discord' AND external_message_id = ?",
-- "SELECT * FROM space_chat_rooms WHERE space_id = ?",
-- "SELECT * FROM space_groups ORDER BY position, name COLLATE NOCASE",
-- "SELECT * FROM spaces WHERE id = ?",
-- "SELECT * FROM spaces WHERE slug = ?",
-- "SELECT * FROM subject_projection WHERE subject_id = ?",
-- "SELECT * FROM threads WHERE id = ?",
-- "SELECT * FROM threads WHERE id = ? AND deleted_at IS NULL",
-- "SELECT * FROM threads WHERE space_id = ? AND external_key = ?",
-- "SELECT * FROM threads WHERE space_id = ? AND slug = ? AND deleted_at IS NULL",
-- "SELECT 1 FROM game_progress WHERE subject_id = ?",
-- "SELECT 1 FROM network_blocks WHERE blocker_subject = ? AND blocked_subject = ? AND active = 1",
-- "SELECT 1 FROM paste_likes WHERE paste_id = ? AND subject_id = ?",
-- "SELECT 1 FROM pastes WHERE slug = ?",
-- "SELECT 1 FROM pastes WHERE slug = ? AND deleted_at IS NULL AND visibility = 'public' AND burn_after_read = 0",
-- "SELECT 1 FROM post_versions WHERE post_id = ? AND revision = ?",
-- "SELECT 1 FROM posts p JOIN threads t ON t.id = p.thread_id JOIN spaces s ON s.id = t.space_id WHERE p.id = ? AND p.deleted_at IS NULL AND t.deleted_at IS NULL AND s.visibility = 'public'",
-- "SELECT 1 FROM posts p JOIN threads th ON th.id = p.thread_id JOIN spaces s ON s.id = th.space_id WHERE p.id = ? AND p.deleted_at IS NULL AND th.deleted_at IS NULL AND s.visibility = 'public' AND s.members_only_owner IS NULL AND th.members_only_owner IS NULL",
-- "SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ?",
-- "SELECT 1 FROM threads WHERE space_id = ? AND slug = ?",
-- "SELECT COALESCE(SUM(value), 0) AS s, COALESCE(SUM(CASE WHEN value = 1 THEN 1 ELSE 0 END), 0) AS u, COALESCE(SUM(CASE WHEN value = -1 THEN 1 ELSE 0 END), 0) AS d FROM comment_votes WHERE comment_id = ?",
-- "SELECT COUNT(*) AS c FROM paste_comments WHERE paste_id = ? AND is_deleted = 0",
-- "SELECT COUNT(*) AS c FROM pastes WHERE owner_subject = ? AND created_at > datetime('now', ?)",
-- "SELECT COUNT(*) AS c FROM posts WHERE author_subject = ? AND created_at > datetime('now', ?)",
-- "SELECT COUNT(*) AS c FROM posts WHERE thread_id = ? AND id <= ?",
-- "SELECT COUNT(*) AS c FROM threads WHERE author_subject = ? AND created_at > datetime('now', ?)",
-- "SELECT COUNT(*) AS n FROM relay_inbound_failures WHERE dismissed_at IS NULL",
-- "SELECT COUNT(*) AS n FROM relay_message_map WHERE external_deleted_at IS NULL",
-- "SELECT COUNT(*) AS n FROM sqlite_master WHERE type = 'table'",
-- "SELECT COUNT(*) AS n, MIN(created_at) AS first, MAX(created_at) AS last FROM comments WHERE author_subject = ? AND deleted_at IS NULL AND origin = 'user'",
-- "SELECT COUNT(*) AS n, MIN(created_at) AS first, MAX(created_at) AS last FROM pastes WHERE owner_subject = ? AND deleted_at IS NULL AND origin = 'user' AND visibility = 'public'",
-- "SELECT COUNT(*) AS n, MIN(created_at) AS first, MAX(created_at) AS last FROM posts WHERE author_subject = ? AND deleted_at IS NULL AND is_opening = 0 AND origin = 'user'",
-- "SELECT COUNT(*) AS n, MIN(created_at) AS first, MAX(created_at) AS last FROM threads WHERE author_subject = ? AND deleted_at IS NULL AND origin = 'user'",
-- "SELECT COUNT(*) AS total FROM pastes WHERE deleted_at IS NULL AND owner_subject = ?",
-- "SELECT COUNT(*) AS total FROM pastes WHERE deleted_at IS NULL AND visibility = 'public' AND burn_after_read = 0",
-- "SELECT COUNT(*) AS total FROM pastes WHERE deleted_at IS NULL AND visibility = 'public' AND burn_after_read = 0 AND owner_subject = ?",
-- "SELECT COUNT(*) AS total FROM pastes WHERE deleted_at IS NULL AND visibility = 'public' AND burn_after_read = 0 AND type = ?",
-- "SELECT COUNT(*) AS total FROM posts WHERE thread_id = ?",
-- "SELECT COUNT(*) AS total FROM threads WHERE space_id = @space AND deleted_at IS NULL AND (@category IS NULL OR category_id = @category) AND (@status IS NULL OR status = @status)",
-- "SELECT author_subject AS s, COUNT(*) AS posts, MIN(created_at) AS first_post_at FROM posts WHERE author_subject IN (?) AND deleted_at IS NULL GROUP BY author_subject",
-- "SELECT author_subject FROM posts WHERE id = ?",
-- "SELECT body_markdown FROM posts WHERE thread_id = ? AND is_opening = 1",
-- "SELECT c.*, (SELECT COUNT(*) FROM threads t WHERE t.category_id = c.id AND t.deleted_at IS NULL) AS thread_count FROM categories c WHERE c.space_id = ? ORDER BY c.position, c.name COLLATE NOCASE",
-- "SELECT copies FROM pastes WHERE id = ?",
-- "SELECT cursor, latest_seq FROM relay_cursors WHERE name = ?",
-- "SELECT f.*, s.slug AS space_slug FROM relay_inbound_failures f LEFT JOIN relay_mappings m ON m.id = f.mapping_id LEFT JOIN spaces s ON s.id = m.space_id WHERE (? = 1 OR f.dismissed_at IS NULL) ORDER BY f.id DESC LIMIT ?",
-- "SELECT hash FROM profile_module_pushes WHERE subject_id = ?",
-- "SELECT i.* FROM pulse_items i WHERE (@origin IS NULL OR i.origin = @origin) AND (@at IS NULL OR i.occurred_at < @at OR (i.occurred_at = @at AND i.id < @id)) AND (i.source_service <> 'community' OR (i.source_type = 'paste' AND EXISTS (SELECT 1 FROM pastes p WHERE p.slug = i.source_id AND p.deleted_at IS NULL AND p.visibility = 'public')) OR (i.source_type = 'thread' AND EXISTS (SELECT 1 FROM threads t JOIN spaces s ON s.id = t.space_id WHERE t.id = CAST(i.source_id AS INTEGER) AND t.deleted_at IS NULL AND s.visibility = 'public' AND s.members_only_owner IS NULL AND t.members_only_owner IS NULL)) OR (i.source_type = 'post' AND EXISTS (SELECT 1 FROM posts po JOIN threads t ON t.id = po.thread_id JOIN spaces s ON s.id = t.space_id WHERE po.id = CAST(i.source_id AS INTEGER) AND po.deleted_at IS NULL AND t.deleted_at IS NULL AND s.visibility = 'public' AND s.members_only_owner IS NULL AND t.members_only_owner IS NULL))) ORDER BY i.occurred_at DESC, i.id DESC LIMIT @limit",
-- "SELECT id FROM comment_threads WHERE access_id IS NULL",
-- "SELECT id FROM posts WHERE thread_id = ?",
-- "SELECT id FROM space_groups WHERE slug = ?",
-- "SELECT id FROM threads",
-- "SELECT id FROM threads WHERE space_id = ?",
-- "SELECT id, body_markdown FROM posts WHERE thread_id = ? AND is_opening = 1",
-- "SELECT id, legacy_media_id FROM pastes WHERE slug = ?",
-- "SELECT id, slug, visibility, burn_after_read, deleted_at FROM pastes WHERE slug = ?",
-- "SELECT last_at FROM paste_visits WHERE paste_id = ? AND visitor = ?",
-- "SELECT level FROM game_progress WHERE subject_id = ?",
-- "SELECT name FROM sqlite_master WHERE type = 'table'",
-- "SELECT p.author_subject AS s, r.reaction, COUNT(*) AS n FROM post_reactions r JOIN posts p ON p.id = r.post_id WHERE p.author_subject IN (?) AND p.deleted_at IS NULL GROUP BY p.author_subject, r.reaction",
-- "SELECT post_id, reaction, subject_id FROM post_reactions WHERE post_id IN (?) ORDER BY created_at, subject_id",
-- "SELECT pp.post_id, p.slug, p.title, p.language, p.type, p.screenshot_url, p.visibility, p.content FROM post_pastes pp JOIN pastes p ON p.id = pp.paste_id WHERE pp.post_id IN (?) AND p.deleted_at IS NULL AND p.visibility != 'private' AND p.burn_after_read = 0 ORDER BY pp.post_id, pp.position",
-- "SELECT reaction FROM post_reactions WHERE post_id = ? AND subject_id = ?",
-- "SELECT revision, body_markdown, edited_by, created_at FROM post_versions WHERE post_id = ? ORDER BY revision ASC",
-- "SELECT revision, title, content, language, edited_by, created_at FROM paste_versions WHERE paste_id = ? ORDER BY revision ASC",
-- "SELECT s.*, g.slug AS group_slug, g.name AS group_name, g.description AS group_description, g.position AS group_position, ps.slug AS parent_slug, ps.name AS parent_name, (SELECT COUNT(*) FROM threads t WHERE t.space_id = s.id AND t.deleted_at IS NULL) AS thread_count, (SELECT COUNT(*) FROM posts p JOIN threads t ON t.id = p.thread_id WHERE t.space_id = s.id AND t.deleted_at IS NULL AND p.deleted_at IS NULL) AS post_count, (SELECT MAX(t.last_activity_at) FROM threads t WHERE t.space_id = s.id AND t.deleted_at IS NULL) AS last_activity_at FROM spaces s LEFT JOIN space_groups g ON g.id = s.group_id LEFT JOIN spaces ps ON ps.id = s.parent_id WHERE s.visibility IN (?) ORDER BY g.position IS NULL, g.position, s.position, s.id ASC",
-- "SELECT sent_at FROM account_data_events WHERE id = ?",
-- "SELECT slug, name FROM space_groups WHERE id = ?",
-- "SELECT slug, name FROM spaces WHERE id = ?",
-- "SELECT slug, name, description, position FROM space_groups WHERE slug = ?",
-- "SELECT slug, visibility, members_only_owner FROM spaces WHERE id = ?",
-- "SELECT status, COUNT(*) AS n FROM relay_deliveries GROUP BY status",
-- "SELECT subject_id FROM subject_projection WHERE username = ? COLLATE NOCASE ORDER BY refreshed_at DESC",
-- "SELECT t.*, s.slug AS space_slug, s.name AS space_name FROM threads t JOIN spaces s ON s.id = t.space_id WHERE t.deleted_at IS NULL AND s.visibility IN (?) AND (? IS NULL OR s.slug = ?) AND s.members_only_owner IS NULL AND t.members_only_owner IS NULL ORDER BY t.created_at DESC, t.id DESC LIMIT ?",
-- "SELECT t.slug AS thread_slug, t.title AS thread_title, p.author_subject, p.origin, p.created_at, p.id AS post_id FROM posts p JOIN threads t ON t.id = p.thread_id WHERE t.space_id = ? AND t.deleted_at IS NULL AND p.deleted_at IS NULL AND t.members_only_owner IS NULL ORDER BY p.id DESC LIMIT 1",
-- "SELECT t.slug, t.title, s.slug AS space_slug FROM threads t JOIN spaces s ON s.id = t.space_id WHERE t.crosspost_of = ? AND t.deleted_at IS NULL ORDER BY t.id",
-- "SELECT target_id FROM legacy_id_map WHERE source_system = ? AND source_type = ? AND source_id = ?",
-- "SELECT threads.*, (SELECT p.author_subject FROM posts p WHERE p.thread_id = threads.id AND p.deleted_at IS NULL ORDER BY p.id DESC LIMIT 1) AS last_author_subject, (SELECT p.origin FROM posts p WHERE p.thread_id = threads.id AND p.deleted_at IS NULL ORDER BY p.id DESC LIMIT 1) AS last_origin, (SELECT p.id FROM posts p WHERE p.thread_id = threads.id AND p.deleted_at IS NULL ORDER BY p.id DESC LIMIT 1) AS last_post_id FROM threads WHERE space_id = @space AND deleted_at IS NULL AND (@category IS NULL OR category_id = @category) AND (@status IS NULL OR status = @status) ORDER BY pinned DESC, last_activity_at DESC, id DESC LIMIT @limit OFFSET @offset",
-- "SELECT title FROM pastes WHERE slug = ? AND deleted_at IS NULL AND visibility != 'private' AND burn_after_read = 0",
-- "SELECT valid_after_ms FROM token_revocations WHERE subject_id = ?",
-- "SELECT views, unique_views FROM pastes WHERE id = ?",
-- "UPDATE account_data_events SET sent_at = ? WHERE id = ?",
-- "UPDATE attachments SET post_id = ?, position = ? WHERE media_id = ? AND post_id IS NULL",
-- "UPDATE comment_threads SET access_id = ? WHERE id = ?",
-- "UPDATE comment_threads SET comment_count = (SELECT COUNT(*) FROM comments WHERE thread_id = ? AND deleted_at IS NULL), updated_at = CURRENT_TIMESTAMP WHERE id = ?",
-- "UPDATE comment_threads SET comment_count = comment_count + 1, updated_at = CURRENT_TIMESTAMP WHERE id = ?",
-- "UPDATE comment_threads SET ref_label = ?, updated_at = CURRENT_TIMESTAMP WHERE ref_service = ? AND ref_type = ? AND ref_id = ? AND COALESCE(ref_label, '') <> ?",
-- "UPDATE comment_threads SET visibility = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?",
-- "UPDATE comments SET deleted_at = CURRENT_TIMESTAMP, deleted_by = ?, message = '', updated_at = CURRENT_TIMESTAMP WHERE id = ?",
-- "UPDATE comments SET message = ?, edited_at = CURRENT_TIMESTAMP, updated_at = CURRENT_TIMESTAMP WHERE id = ? AND deleted_at IS NULL",
-- "UPDATE comments SET reply_count = (SELECT COUNT(*) FROM comments WHERE parent_id = ? AND deleted_at IS NULL) WHERE id = ?",
-- "UPDATE comments SET reply_count = (SELECT COUNT(*) FROM comments c WHERE c.parent_id = comments.id) WHERE reply_count != (SELECT COUNT(*) FROM comments c WHERE c.parent_id = comments.id)",
-- "UPDATE comments SET reply_count = reply_count + 1 WHERE id = ?",
-- "UPDATE comments SET score = ?, upvotes = ?, downvotes = ? WHERE id = ?",
-- "UPDATE game_progress SET subject_id = ? WHERE subject_id = ?",
-- "UPDATE paste_comments SET parent_id = ? WHERE id = ? AND parent_id IS NOT ?",
-- "UPDATE pastes SET copies = copies + 1 WHERE id = ?",
-- "UPDATE pastes SET forked_from = ? WHERE id = ? AND forked_from IS NOT ?",
-- "UPDATE pastes SET likes = (SELECT COUNT(*) FROM paste_likes WHERE paste_id = ?) WHERE id = ?",
-- "UPDATE pastes SET owner_subject = NULL, title = ?, content = '', screenshot_url = NULL, media_ref = NULL, stream_ref = NULL, metadata = NULL, ai_summary = NULL, ai_tags = NULL, legacy_user_id = NULL, deleted_at = COALESCE(deleted_at, ?), updated_at = ? WHERE id = ?",
-- "UPDATE pastes SET views = views + 1, unique_views = unique_views + 1 WHERE id = ?",
-- "UPDATE posts SET author_subject = NULL, relay_author = NULL, body_markdown = ?, deleted_at = COALESCE(deleted_at, ?), updated_at = ? WHERE id = ?",
-- "UPDATE posts SET body_markdown = ?, revision = revision + 1, updated_at = CURRENT_TIMESTAMP WHERE id = ?",
-- "UPDATE posts SET deleted_at = CURRENT_TIMESTAMP, body_markdown = '', updated_at = CURRENT_TIMESTAMP WHERE id = ?",
-- "UPDATE pulse_items SET title = ?, url = ? WHERE source_service = ? AND source_type = ? AND source_id = ?",
-- "UPDATE relay_deliveries SET status = 'dropped', updated_at = CURRENT_TIMESTAMP WHERE id = ? AND status IN ('pending', 'failed')",
-- "UPDATE relay_deliveries SET status = 'pending', attempts = 0, next_attempt_at = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ? AND status <> 'delivered'",
-- "UPDATE relay_inbound_failures SET dismissed_at = CURRENT_TIMESTAMP WHERE id = ? AND dismissed_at IS NULL",
-- "UPDATE relay_message_map SET external_deleted_at = CURRENT_TIMESTAMP, updated_at = CURRENT_TIMESTAMP WHERE id = ? AND external_deleted_at IS NULL",
-- "UPDATE relay_message_map SET updated_at = CURRENT_TIMESTAMP WHERE id = ?",
-- "UPDATE spaces SET group_id = (SELECT id FROM space_groups WHERE slug = ?), position = ?, style = ?, votes = ? WHERE slug = ? AND created_by = 'system' AND group_id IS NULL",
-- "UPDATE spaces SET members_only_owner = ? WHERE id = ?",
-- "UPDATE threads SET author_subject = NULL, title = ? WHERE id = ?",
-- "UPDATE threads SET category_id = ? WHERE id = ?",
-- "UPDATE threads SET category_id = NULL WHERE category_id = ?",
-- "UPDATE threads SET deleted_at = CURRENT_TIMESTAMP WHERE id = ? AND deleted_at IS NULL",
-- "UPDATE threads SET members_only_owner = ? WHERE id = ?",
-- "UPDATE threads SET reply_count = (SELECT COUNT(*) FROM posts WHERE thread_id = ? AND is_opening = 0 AND deleted_at IS NULL) WHERE id = ?",
-- "UPDATE threads SET reply_count = (SELECT COUNT(*) FROM posts p WHERE p.thread_id = threads.id AND p.is_opening = 0)",
-- "UPDATE threads SET reply_count = reply_count + 1, last_activity_at = CURRENT_TIMESTAMP WHERE id = ?",
-- "UPDATE threads SET score = (SELECT COALESCE(SUM(value), 0) FROM thread_votes WHERE thread_id = ?) WHERE id = ?",
-- "UPDATE threads SET status = ? WHERE id = ?",
-- "UPDATE threads SET title = ?, status = ?, category_id = ? WHERE id = ?",
-- "UPDATE threads SET views = views + 1 WHERE id = ?"
-- ]
++ "statements": []
}