diff options
Diffstat (limited to 'models/migrations/v46.go')
-rw-r--r-- | models/migrations/v46.go | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/models/migrations/v46.go b/models/migrations/v46.go new file mode 100644 index 0000000000..3cc35a300f --- /dev/null +++ b/models/migrations/v46.go @@ -0,0 +1,36 @@ +// Copyright 2017 The Gitea 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 ( + "github.com/go-xorm/xorm" +) + +func removeOrganizationWatchRepo(x *xorm.Engine) error { + // UserType defines the user type + type UserType int + + const ( + // UserTypeIndividual defines an individual user + UserTypeIndividual UserType = iota // Historic reason to make it starts at 0. + + // UserTypeOrganization defines an organization + UserTypeOrganization + ) + + sess := x.NewSession() + defer sess.Close() + if err := sess.Begin(); err != nil { + return err + } + if _, err := sess.Exec("DELETE FROM watch WHERE id IN (SELECT watch.id FROM watch INNER JOIN user ON watch.user_id = user.id WHERE `user`.`type` = ?)", UserTypeOrganization); err != nil { + return err + } + if _, err := sess.Exec("UPDATE `repository` SET num_watches = (SELECT count(*) FROM watch WHERE `repository`.`id` = watch.repo_id)"); err != nil { + return err + } + + return sess.Commit() +} |