From bb5da1d3f579b4ffa67ca77797d4908b8147e170 Mon Sep 17 00:00:00 2001 From: Matt Baer Date: Tue, 3 Mar 2020 11:40:56 -0600 Subject: [PATCH] Break up v5 table ALTERs for SQLite Combining all operations into a single query was causing problems in SQLite. This fixes that by breaking them up into separate queries. It also moves one column length change to only run on MySQL, since SQLite doesn't need it. --- migrations/v5.go | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/migrations/v5.go b/migrations/v5.go index 0dc5129..dc404e7 100644 --- a/migrations/v5.go +++ b/migrations/v5.go @@ -20,30 +20,30 @@ func oauthSlack(db *datastore) error { Column( "provider", wf_db.ColumnTypeVarChar, - wf_db.OptionalInt{Set: true, Value: 24,})). + wf_db.OptionalInt{Set: true, Value: 24})), + dialect. + AlterTable("oauth_client_states"). AddColumn(dialect. Column( "client_id", wf_db.ColumnTypeVarChar, - wf_db.OptionalInt{Set: true, Value: 128,})), + wf_db.OptionalInt{Set: true, Value: 128})), dialect. AlterTable("oauth_users"). - ChangeColumn("remote_user_id", - dialect. - Column( - "remote_user_id", - wf_db.ColumnTypeVarChar, - wf_db.OptionalInt{Set: true, Value: 128,})). AddColumn(dialect. Column( "provider", wf_db.ColumnTypeVarChar, - wf_db.OptionalInt{Set: true, Value: 24,})). + wf_db.OptionalInt{Set: true, Value: 24})), + dialect. + AlterTable("oauth_users"). AddColumn(dialect. Column( "client_id", wf_db.ColumnTypeVarChar, - wf_db.OptionalInt{Set: true, Value: 128,})). + wf_db.OptionalInt{Set: true, Value: 128})), + dialect. + AlterTable("oauth_users"). AddColumn(dialect. Column( "access_token", @@ -51,6 +51,18 @@ func oauthSlack(db *datastore) error { wf_db.OptionalInt{Set: true, Value: 512,})), dialect.CreateUniqueIndex("oauth_users", "oauth_users", "user_id", "provider", "client_id"), } + + if dialect != wf_db.DialectSQLite { + // This updates the length of the `remote_user_id` column. It isn't needed for SQLite databases. + builders = append(builders, dialect. + AlterTable("oauth_users"). + ChangeColumn("remote_user_id", + dialect. + Column( + "remote_user_id", + wf_db.ColumnTypeVarChar, + wf_db.OptionalInt{Set: true, Value: 128}))) + } for _, builder := range builders { query, err := builder.ToSQL() if err != nil {