12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package upgrades
- import "database/sql"
- func init() {
- upgrades[39] = upgrade{"Add backfill queue", func(tx *sql.Tx, ctx context) error {
- _, err := tx.Exec(`
- CREATE TABLE backfill_queue (
- queue_id INTEGER PRIMARY KEY,
- user_mxid TEXT,
- type INTEGER NOT NULL,
- priority INTEGER NOT NULL,
- portal_jid VARCHAR(255),
- portal_receiver VARCHAR(255),
- time_start TIMESTAMP,
- time_end TIMESTAMP,
- max_batch_events INTEGER NOT NULL,
- max_total_events INTEGER,
- batch_delay INTEGER,
- completed_at TIMESTAMP,
- FOREIGN KEY (user_mxid) REFERENCES "user"(mxid) ON DELETE CASCADE ON UPDATE CASCADE,
- FOREIGN KEY (portal_jid, portal_receiver) REFERENCES portal(jid, receiver) ON DELETE CASCADE
- )
- `)
- if err != nil {
- return err
- }
- // The queue_id needs to auto-increment every insertion. For SQLite,
- // INTEGER PRIMARY KEY is an alias for the ROWID, so it will
- // auto-increment. See https://sqlite.org/lang_createtable.html#rowid
- // For Postgres, we have to manually add the sequence.
- if ctx.dialect == Postgres {
- _, err = tx.Exec(`
- CREATE SEQUENCE backfill_queue_queue_id_seq
- START WITH 1
- OWNED BY backfill_queue.queue_id
- `)
- if err != nil {
- return err
- }
- _, err = tx.Exec(`
- ALTER TABLE backfill_queue
- ALTER COLUMN queue_id
- SET DEFAULT nextval('backfill_queue_queue_id_seq'::regclass)
- `)
- if err != nil {
- return err
- }
- }
- return err
- }}
- }
|