2019-05-16-message-delete-cascade.go 670 B

12345678910111213141516171819202122232425
  1. package upgrades
  2. import (
  3. "database/sql"
  4. )
  5. func init() {
  6. upgrades[1] = upgrade{"Add ON DELETE CASCADE to message table", func(dialect Dialect, tx *sql.Tx, db *sql.DB) error {
  7. if dialect == SQLite {
  8. // SQLite doesn't support constraint updates, but it isn't that careful with constraints anyway.
  9. return nil
  10. }
  11. _, err := tx.Exec("ALTER TABLE message DROP CONSTRAINT message_chat_jid_fkey")
  12. if err != nil {
  13. return err
  14. }
  15. _, err = tx.Exec(`ALTER TABLE message ADD CONSTRAINT message_chat_jid_fkey
  16. FOREIGN KEY (chat_jid, chat_receiver) REFERENCES portal(jid, receiver)
  17. ON DELETE CASCADE`)
  18. if err != nil {
  19. return err
  20. }
  21. return nil
  22. }}
  23. }