A clean, Markdown-based publishing platform made for writers. Write together, and build a community. https://writefreely.org
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 
 

68 líneas
1.7 KiB

  1. package migrations
  2. import (
  3. "context"
  4. "database/sql"
  5. wf_db "github.com/writeas/writefreely/db"
  6. )
  7. func oauthSlack(db *datastore) error {
  8. dialect := wf_db.DialectMySQL
  9. if db.driverName == driverSQLite {
  10. dialect = wf_db.DialectSQLite
  11. }
  12. return wf_db.RunTransactionWithOptions(context.Background(), db.DB, &sql.TxOptions{}, func(ctx context.Context, tx *sql.Tx) error {
  13. builders := []wf_db.SQLBuilder{
  14. dialect.
  15. AlterTable("oauth_client_states").
  16. AddColumn(dialect.
  17. Column(
  18. "provider",
  19. wf_db.ColumnTypeVarChar,
  20. wf_db.OptionalInt{Set: true, Value: 24,})).
  21. AddColumn(dialect.
  22. Column(
  23. "client_id",
  24. wf_db.ColumnTypeVarChar,
  25. wf_db.OptionalInt{Set: true, Value: 128,})),
  26. dialect.
  27. AlterTable("oauth_users").
  28. ChangeColumn("remote_user_id",
  29. dialect.
  30. Column(
  31. "remote_user_id",
  32. wf_db.ColumnTypeVarChar,
  33. wf_db.OptionalInt{Set: true, Value: 128,})).
  34. AddColumn(dialect.
  35. Column(
  36. "provider",
  37. wf_db.ColumnTypeVarChar,
  38. wf_db.OptionalInt{Set: true, Value: 24,})).
  39. AddColumn(dialect.
  40. Column(
  41. "client_id",
  42. wf_db.ColumnTypeVarChar,
  43. wf_db.OptionalInt{Set: true, Value: 128,})).
  44. AddColumn(dialect.
  45. Column(
  46. "access_token",
  47. wf_db.ColumnTypeVarChar,
  48. wf_db.OptionalInt{Set: true, Value: 512,})),
  49. dialect.DropIndex("remote_user_id", "oauth_users"),
  50. dialect.DropIndex("user_id", "oauth_users"),
  51. dialect.CreateUniqueIndex("oauth_users", "oauth_users", "user_id", "provider", "client_id"),
  52. }
  53. for _, builder := range builders {
  54. query, err := builder.ToSQL()
  55. if err != nil {
  56. return err
  57. }
  58. if _, err := tx.ExecContext(ctx, query); err != nil {
  59. return err
  60. }
  61. }
  62. return nil
  63. })
  64. }