// ExternalLoginUser makes the connecting between some existing user and additional external login sources | // ExternalLoginUser makes the connecting between some existing user and additional external login sources | ||||
type ExternalLoginUser struct { | type ExternalLoginUser struct { | ||||
ExternalID string `xorm:"NOT NULL"` | |||||
UserID int64 `xorm:"NOT NULL"` | |||||
LoginSourceID int64 `xorm:"NOT NULL"` | |||||
ExternalID string `xorm:"pk NOT NULL"` | |||||
UserID int64 `xorm:"INDEX NOT NULL"` | |||||
LoginSourceID int64 `xorm:"pk NOT NULL"` | |||||
} | } | ||||
// GetExternalLogin checks if a externalID in loginSourceID scope already exists | // GetExternalLogin checks if a externalID in loginSourceID scope already exists |
NewMigration("add field for repo size", addRepoSize), | NewMigration("add field for repo size", addRepoSize), | ||||
// v29 -> v30 | // v29 -> v30 | ||||
NewMigration("add commit status table", addCommitStatus), | NewMigration("add commit status table", addCommitStatus), | ||||
// v30 -> 31 | |||||
NewMigration("add primary key to external login user", addExternalLoginUserPK), | |||||
} | } | ||||
// Migrate database to current version | // Migrate database to current version |
// Copyright 2017 The Gogs Authors. All rights reserved. | |||||
// Use of this source code is governed by a MIT-style | |||||
// license that can be found in the LICENSE file. | |||||
package migrations | |||||
import ( | |||||
"fmt" | |||||
"github.com/go-xorm/xorm" | |||||
) | |||||
func addExternalLoginUserPK(x *xorm.Engine) error { | |||||
// ExternalLoginUser see models/external_login_user.go | |||||
type ExternalLoginUser struct { | |||||
ExternalID string `xorm:"pk NOT NULL"` | |||||
UserID int64 `xorm:"INDEX NOT NULL"` | |||||
LoginSourceID int64 `xorm:"pk NOT NULL"` | |||||
} | |||||
extlogins := make([]*ExternalLoginUser, 0, 6) | |||||
if err := x.Find(&extlogins); err != nil { | |||||
return fmt.Errorf("Find: %v", err) | |||||
} | |||||
if err := x.DropTables(new(ExternalLoginUser)); err != nil { | |||||
return fmt.Errorf("DropTables: %v", err) | |||||
} | |||||
if err := x.Sync2(new(ExternalLoginUser)); err != nil { | |||||
return fmt.Errorf("Sync2: %v", err) | |||||
} | |||||
if _, err := x.Insert(extlogins); err != nil { | |||||
return fmt.Errorf("Insert: %v", err) | |||||
} | |||||
return nil | |||||
} |