2019-08-25-move-state-store-to-db.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package upgrades
  2. import (
  3. "database/sql"
  4. "strings"
  5. "maunium.net/go/mautrix/event"
  6. )
  7. func init() {
  8. userProfileTable := `CREATE TABLE mx_user_profile (
  9. room_id VARCHAR(255),
  10. user_id VARCHAR(255),
  11. membership VARCHAR(15) NOT NULL,
  12. PRIMARY KEY (room_id, user_id)
  13. )`
  14. roomStateTable := `CREATE TABLE mx_room_state (
  15. room_id VARCHAR(255) PRIMARY KEY,
  16. power_levels TEXT
  17. )`
  18. registrationsTable := `CREATE TABLE mx_registrations (
  19. user_id VARCHAR(255) PRIMARY KEY
  20. )`
  21. type TempStateStore struct {
  22. Registrations map[string]bool `json:"registrations"`
  23. Members map[string]map[string]event.Membership `json:"memberships"`
  24. PowerLevels map[string]*event.PowerLevelsEventContent `json:"power_levels"`
  25. }
  26. upgrades[9] = upgrade{"Move state store to main DB", func(tx *sql.Tx, ctx context) error {
  27. if ctx.dialect == Postgres {
  28. roomStateTable = strings.Replace(roomStateTable, "TEXT", "JSONB", 1)
  29. }
  30. if _, err := tx.Exec(userProfileTable); err != nil {
  31. return err
  32. } else if _, err = tx.Exec(roomStateTable); err != nil {
  33. return err
  34. } else if _, err = tx.Exec(registrationsTable); err != nil {
  35. return err
  36. }
  37. return nil
  38. }}
  39. }