You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

30 lines
1.6 KiB
SQL

-- pages.elijah.run — incremental migration: users.trusted + pages.trusted
--
-- pages-shqc: adds the admin-granted "trust" escape hatch (design §2.1
-- addendum) — trusted pages/users are served WITHOUT the CSP sandbox so
-- local-first apps (e.g. a habit tracker) can use localStorage. Effective
-- trust for a page is `pages.trusted OR <owner's> users.trusted`, computed
-- at serve time (src/db.rs::PageRow::effective_trust).
--
-- `migrations/schema.sql` already has both columns for fresh installs
-- (`CREATE TABLE IF NOT EXISTS` there is a no-op against a live DB that
-- already has the tables). This file is for the *existing* production D1
-- database, which needs the columns added in place.
--
-- SQLite has no `ALTER TABLE ... ADD COLUMN IF NOT EXISTS`, so re-running
-- this file against a database that has already applied it will fail with
-- an error like `duplicate column name: trusted` on each statement below —
-- that is expected and safe to ignore (same precedent as quotesdb's
-- `ALTER_QUOTES_ADD_HIDDEN` migration, src/db/migrations.rs). Do NOT run
-- this more than once per database; check first if unsure
-- (`PRAGMA table_info(users)` / `PRAGMA table_info(pages)`).
--
-- Apply with (NOT run automatically by this ticket — remote apply is a
-- separate, manual, human-triggered step):
-- wrangler d1 execute <DB_NAME> --file=migrations/0002-trust.sql (remote)
-- wrangler d1 execute <DB_NAME> --local --file=migrations/0002-trust.sql (local dev)
ALTER TABLE users ADD COLUMN trusted INTEGER NOT NULL DEFAULT 0;
ALTER TABLE pages ADD COLUMN trusted INTEGER NOT NULL DEFAULT 0;