package store var migrations = []string{ ` CREATE TABLE IF NOT EXISTS user_filter_ids ( user_id VARCHAR(255) PRIMARY KEY, filter_id VARCHAR(255) ) `, ` CREATE TABLE IF NOT EXISTS user_batch_tokens ( user_id VARCHAR(255) PRIMARY KEY, next_batch_token VARCHAR(255) ) `, ` CREATE TABLE IF NOT EXISTS rooms ( room_id VARCHAR(255) PRIMARY KEY, encryption_event VARCHAR(65535) NULL ) `, ` CREATE TABLE IF NOT EXISTS room_members ( room_id VARCHAR(255), user_id VARCHAR(255), PRIMARY KEY (room_id, user_id) ) `, ` CREATE TABLE IF NOT EXISTS session ( user_id VARCHAR(255), device_id VARCHAR(255), access_token VARCHAR(255) ) `, } // CreateTables applies all the pending database migrations. func (s *Store) CreateTables() error { s.log.Debug("migrating database...") tx, beginErr := s.db.Begin() if beginErr != nil { s.log.Error("cannot begin transaction: %v", beginErr) return beginErr } for _, query := range migrations { _, execErr := tx.Exec(query) if execErr != nil { s.log.Error("cannot apply migration: %v", execErr) // nolint // we already have the execErr to return tx.Rollback() return execErr } } commitErr := tx.Commit() if commitErr != nil { s.log.Error("cannot commit transaction: %v", commitErr) // nolint // we already have the commitErr to return tx.Rollback() return commitErr } return nil }