2021-08-19-remove-message-content.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package upgrades
  2. import (
  3. "database/sql"
  4. )
  5. func init() {
  6. upgrades[21] = upgrade{"Remove message content from local database", func(tx *sql.Tx, ctx context) error {
  7. if ctx.dialect == SQLite {
  8. _, err := tx.Exec("ALTER TABLE message RENAME TO old_message")
  9. if err != nil {
  10. return err
  11. }
  12. _, err = tx.Exec(`CREATE TABLE IF NOT EXISTS message (
  13. chat_jid TEXT,
  14. chat_receiver TEXT,
  15. jid TEXT,
  16. mxid TEXT NOT NULL UNIQUE,
  17. sender TEXT NOT NULL,
  18. timestamp BIGINT NOT NULL,
  19. sent BOOLEAN NOT NULL,
  20. PRIMARY KEY (chat_jid, chat_receiver, jid),
  21. FOREIGN KEY (chat_jid, chat_receiver) REFERENCES portal(jid, receiver) ON DELETE CASCADE
  22. )`)
  23. if err != nil {
  24. return err
  25. }
  26. _, err = tx.Exec("INSERT INTO message SELECT chat_jid, chat_receiver, jid, mxid, sender, timestamp, sent FROM old_message")
  27. return err
  28. } else {
  29. _, err := tx.Exec(`ALTER TABLE message DROP COLUMN content`)
  30. if err != nil {
  31. return err
  32. }
  33. _, err = tx.Exec(`ALTER TABLE message ALTER COLUMN timestamp DROP DEFAULT`)
  34. if err != nil {
  35. return err
  36. }
  37. _, err = tx.Exec(`ALTER TABLE message ALTER COLUMN sent DROP DEFAULT`)
  38. return err
  39. }
  40. }}
  41. }