mautrix-whatsapp/database/upgrades/2019-08-25-move-state-store-to-db.go

48 lines
1.2 KiB
Go
Raw Normal View History

package upgrades
import (
"database/sql"
"strings"
2020-05-08 21:32:22 +02:00
"maunium.net/go/mautrix/event"
)
func init() {
userProfileTable := `CREATE TABLE mx_user_profile (
room_id VARCHAR(255),
user_id VARCHAR(255),
membership VARCHAR(15) NOT NULL,
PRIMARY KEY (room_id, user_id)
)`
roomStateTable := `CREATE TABLE mx_room_state (
room_id VARCHAR(255) PRIMARY KEY,
power_levels TEXT
)`
registrationsTable := `CREATE TABLE mx_registrations (
user_id VARCHAR(255) PRIMARY KEY
)`
2020-03-26 22:36:34 +01:00
type TempStateStore struct {
2020-05-08 21:32:22 +02:00
Registrations map[string]bool `json:"registrations"`
Members map[string]map[string]event.Membership `json:"memberships"`
PowerLevels map[string]*event.PowerLevelsEventContent `json:"power_levels"`
2020-03-26 22:36:34 +01:00
}
2020-03-26 22:36:34 +01:00
upgrades[9] = upgrade{"Move state store to main DB", func(tx *sql.Tx, ctx context) error {
if ctx.dialect == Postgres {
roomStateTable = strings.Replace(roomStateTable, "TEXT", "JSONB", 1)
}
2019-08-25 18:26:04 +02:00
if _, err := tx.Exec(userProfileTable); err != nil {
return err
} else if _, err = tx.Exec(roomStateTable); err != nil {
return err
} else if _, err = tx.Exec(registrationsTable); err != nil {
return err
}
return nil
}}
}