瀏覽代碼

Fix bugs in db migration. Fixes #211

Tulir Asokan 4 年之前
父節點
當前提交
6cb55f3969
共有 2 個文件被更改,包括 9 次插入6 次删除
  1. 8 5
      database/migrate.go
  2. 1 1
      main.go

+ 8 - 5
database/migrate.go

@@ -71,6 +71,9 @@ func migrateTable(old *Database, new *Database, table string, columns ...string)
 			slicedValueStrings = slicedValueStrings[:i]
 			slicedValueStrings = slicedValueStrings[:i]
 			slicedValues = slicedValues[:i*colCount]
 			slicedValues = slicedValues[:i*colCount]
 		}
 		}
+		if len(slicedValues) == 0 {
+			break
+		}
 		res, err := tx.Exec(fmt.Sprintf("INSERT INTO \"%s\" (%s) VALUES %s", table, columnNames, strings.Join(slicedValueStrings, ",")), slicedValues...)
 		res, err := tx.Exec(fmt.Sprintf("INSERT INTO \"%s\" (%s) VALUES %s", table, columnNames, strings.Join(slicedValueStrings, ",")), slicedValues...)
 		if err != nil {
 		if err != nil {
 			panic(err)
 			panic(err)
@@ -97,7 +100,7 @@ func Migrate(old *Database, new *Database) {
 	if err != nil {
 	if err != nil {
 		panic(err)
 		panic(err)
 	}
 	}
-	err = migrateTable(old, new, "puppet", "jid", "avatar", "displayname", "name_quality", "custom_mxid", "access_token", "next_batch", "avatar_url")
+	err = migrateTable(old, new, "puppet", "jid", "avatar", "displayname", "name_quality", "custom_mxid", "access_token", "next_batch", "avatar_url", "enable_presence", "enable_receipts")
 	if err != nil {
 	if err != nil {
 		panic(err)
 		panic(err)
 	}
 	}
@@ -121,7 +124,7 @@ func Migrate(old *Database, new *Database) {
 	if err != nil {
 	if err != nil {
 		panic(err)
 		panic(err)
 	}
 	}
-	err = migrateTable(old, new, "crypto_account", "device_id", "shared", "sync_token", "account")
+	err = migrateTable(old, new, "crypto_account", "account_id", "device_id", "shared", "sync_token", "account")
 	if err != nil {
 	if err != nil {
 		panic(err)
 		panic(err)
 	}
 	}
@@ -137,15 +140,15 @@ func Migrate(old *Database, new *Database) {
 	if err != nil {
 	if err != nil {
 		panic(err)
 		panic(err)
 	}
 	}
-	err = migrateTable(old, new, "crypto_olm_session", "session_id", "sender_key", "session", "created_at", "last_used")
+	err = migrateTable(old, new, "crypto_olm_session", "account_id", "session_id", "sender_key", "session", "created_at", "last_used")
 	if err != nil {
 	if err != nil {
 		panic(err)
 		panic(err)
 	}
 	}
-	err = migrateTable(old, new, "crypto_megolm_inbound_session", "session_id", "sender_key", "signing_key", "room_id", "session", "forwarding_chains")
+	err = migrateTable(old, new, "crypto_megolm_inbound_session", "account_id", "session_id", "sender_key", "signing_key", "room_id", "session", "forwarding_chains")
 	if err != nil {
 	if err != nil {
 		panic(err)
 		panic(err)
 	}
 	}
-	err = migrateTable(old, new, "crypto_megolm_outbound_session", "room_id", "session_id", "session", "shared", "max_messages", "message_count", "max_age", "created_at", "last_used")
+	err = migrateTable(old, new, "crypto_megolm_outbound_session", "account_id", "room_id", "session_id", "session", "shared", "max_messages", "message_count", "max_age", "created_at", "last_used")
 	if err != nil {
 	if err != nil {
 		panic(err)
 		panic(err)
 	}
 	}

+ 1 - 1
main.go

@@ -109,7 +109,7 @@ func (bridge *Bridge) MigrateDatabase() {
 
 
 	newDB, err := database.New(bridge.Config.AppService.Database.Type, bridge.Config.AppService.Database.URI)
 	newDB, err := database.New(bridge.Config.AppService.Database.Type, bridge.Config.AppService.Database.URI)
 	if err != nil {
 	if err != nil {
-		bridge.Log.Fatalln("Failed to open new database:", err)
+		fmt.Println("Failed to open new database:", err)
 		os.Exit(32)
 		os.Exit(32)
 	}
 	}
 	err = newDB.Init()
 	err = newDB.Init()