It's not straightforward to remove these constraints in SQLite, so this just skips it entirely. Since both of these migrations are part of the same WF release, this should have minimal impact on admins.
65 lines
1.6 KiB
Go
65 lines
1.6 KiB
Go
package migrations
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
|
|
wf_db "github.com/writeas/writefreely/db"
|
|
)
|
|
|
|
func oauthSlack(db *datastore) error {
|
|
dialect := wf_db.DialectMySQL
|
|
if db.driverName == driverSQLite {
|
|
dialect = wf_db.DialectSQLite
|
|
}
|
|
return wf_db.RunTransactionWithOptions(context.Background(), db.DB, &sql.TxOptions{}, func(ctx context.Context, tx *sql.Tx) error {
|
|
builders := []wf_db.SQLBuilder{
|
|
dialect.
|
|
AlterTable("oauth_client_states").
|
|
AddColumn(dialect.
|
|
Column(
|
|
"provider",
|
|
wf_db.ColumnTypeVarChar,
|
|
wf_db.OptionalInt{Set: true, Value: 24,})).
|
|
AddColumn(dialect.
|
|
Column(
|
|
"client_id",
|
|
wf_db.ColumnTypeVarChar,
|
|
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,})).
|
|
AddColumn(dialect.
|
|
Column(
|
|
"client_id",
|
|
wf_db.ColumnTypeVarChar,
|
|
wf_db.OptionalInt{Set: true, Value: 128,})).
|
|
AddColumn(dialect.
|
|
Column(
|
|
"access_token",
|
|
wf_db.ColumnTypeVarChar,
|
|
wf_db.OptionalInt{Set: true, Value: 512,})),
|
|
dialect.CreateUniqueIndex("oauth_users", "oauth_users", "user_id", "provider", "client_id"),
|
|
}
|
|
for _, builder := range builders {
|
|
query, err := builder.ToSQL()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if _, err := tx.ExecContext(ctx, query); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
})
|
|
}
|