···701701 updated text not null default (strftime('%Y-%m-%dT%H:%M:%SZ', 'now'))
702702 );
703703704704+ create table if not exists issue_subscriptions (
705705+ user_did text not null,
706706+ issue_id integer not null references issues(id) on delete cascade,
707707+ subscribed integer not null default 1,
708708+ primary key(user_did, issue_id)
709709+ );
710710+711711+ create table if not exists pull_subscriptions (
712712+ user_did text not null,
713713+ pull_id integer not null references pulls(id) on delete cascade,
714714+ subscribed integer not null default 1,
715715+ primary key(user_did, pull_id)
716716+ );
717717+704718 create table if not exists migrations (
705719 id integer primary key autoincrement,
706720 name text unique
···713727 create index if not exists idx_references_to_at on reference_links(to_at);
714728 create index if not exists idx_webhook_deliveries_webhook_id on webhook_deliveries(webhook_id);
715729 create index if not exists idx_newsletter_prefs_user_did on newsletter_preferences(user_did);
730730+ create index if not exists idx_issue_subscriptions_issue on issue_subscriptions(issue_id, subscribed);
731731+ create index if not exists idx_pull_subscriptions_pull on pull_subscriptions(pull_id, subscribed);
716732 `)
717733 if err != nil {
718734 return nil, err
···24412457 return err
24422458 })
2443245924602460+ orm.RunMigration(conn, logger, "add-emailed-to-notifications", func(tx *sql.Tx) error {
24612461+ _, err := tx.Exec(`
24622462+ ALTER TABLE notifications ADD COLUMN emailed INTEGER NOT NULL DEFAULT 0;
24632463+ CREATE INDEX IF NOT EXISTS idx_notifications_emailed
24642464+ ON notifications(recipient_did, emailed, created);
24652465+ `)
24662466+ return err
24672467+ })
24442468 return &DB{
24452469 db,
24462470 logger,