From 07bcccf9ce805ff29453d295533c96550a03c627 Mon Sep 17 00:00:00 2001 From: zeripath Date: Sun, 5 May 2019 14:47:42 +0100 Subject: [PATCH] Fix v85.go: Set UNIQUE constraint later (#6851) Signed-off-by: Andrew Thornton --- models/migrations/v85.go | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/models/migrations/v85.go b/models/migrations/v85.go index 28f6ac146d..1fe85ac408 100644 --- a/models/migrations/v85.go +++ b/models/migrations/v85.go @@ -24,7 +24,7 @@ func hashAppToken(x *xorm.Engine) error { Name string Sha1 string Token string `xorm:"-"` - TokenHash string `xorm:"UNIQUE"` // sha256 of token + TokenHash string // sha256 of token - we will ensure UNIQUE later TokenSalt string TokenLastEight string `xorm:"token_last_eight"` @@ -74,7 +74,7 @@ func hashAppToken(x *xorm.Engine) error { return err } - if err := x.Sync2(new(AccessToken)); err != nil { + if err := sess.Sync2(new(AccessToken)); err != nil { return fmt.Errorf("Sync2: %v", err) } @@ -130,6 +130,24 @@ func hashAppToken(x *xorm.Engine) error { if err := dropTableColumns(sess, "access_token", "sha1"); err != nil { return err } - return sess.Commit() - + if err := sess.Commit(); err != nil { + return err + } + return resyncHashAppTokenWithUniqueHash(x) +} + +func resyncHashAppTokenWithUniqueHash(x *xorm.Engine) error { + // AccessToken see models/token.go + type AccessToken struct { + TokenHash string `xorm:"UNIQUE"` // sha256 of token - we will ensure UNIQUE later + } + sess := x.NewSession() + defer sess.Close() + if err := sess.Begin(); err != nil { + return err + } + if err := sess.Sync2(new(AccessToken)); err != nil { + return fmt.Errorf("Sync2: %v", err) + } + return sess.Commit() }