Skip to content

Commit 514006a

Browse files
authored
Fix orgnization user watch repository (#2670)
* remove orgnization watch repositories * fix migration * fix typo and missing change * remove unused code
1 parent a4cd461 commit 514006a

File tree

3 files changed

+40
-2
lines changed

3 files changed

+40
-2
lines changed

models/migrations/migrations.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,8 @@ var migrations = []Migration{
140140
NewMigration("remove duplicate unit types", removeDuplicateUnitTypes),
141141
// v45 -> v46
142142
NewMigration("remove index column from repo_unit table", removeIndexColumnFromRepoUnitTable),
143+
// v46 -> v47
144+
NewMigration("remove organization watch repositories", removeOrganizationWatchRepo),
143145
}
144146

145147
// Migrate database to current version

models/migrations/v46.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// Copyright 2017 The Gitea Authors. All rights reserved.
2+
// Use of this source code is governed by a MIT-style
3+
// license that can be found in the LICENSE file.
4+
5+
package migrations
6+
7+
import (
8+
"github.com/go-xorm/xorm"
9+
)
10+
11+
func removeOrganizationWatchRepo(x *xorm.Engine) error {
12+
// UserType defines the user type
13+
type UserType int
14+
15+
const (
16+
// UserTypeIndividual defines an individual user
17+
UserTypeIndividual UserType = iota // Historic reason to make it starts at 0.
18+
19+
// UserTypeOrganization defines an organization
20+
UserTypeOrganization
21+
)
22+
23+
sess := x.NewSession()
24+
defer sess.Close()
25+
if err := sess.Begin(); err != nil {
26+
return err
27+
}
28+
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 {
29+
return err
30+
}
31+
if _, err := sess.Exec("UPDATE `repository` SET num_watches = (SELECT count(*) FROM watch WHERE `repository`.`id` = watch.repo_id)"); err != nil {
32+
return err
33+
}
34+
35+
return sess.Commit()
36+
}

models/repo.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1295,7 +1295,7 @@ func createRepository(e *xorm.Session, doer, u *User, repo *Repository) (err err
12951295
}
12961296
}
12971297

1298-
if err = watchRepo(e, u.ID, repo.ID, true); err != nil {
1298+
if err = watchRepo(e, doer.ID, repo.ID, true); err != nil {
12991299
return fmt.Errorf("watchRepo: %v", err)
13001300
} else if err = newRepoAction(e, u, repo); err != nil {
13011301
return fmt.Errorf("newRepoAction: %v", err)
@@ -1480,7 +1480,7 @@ func TransferOwnership(doer *User, newOwnerName string, repo *Repository) error
14801480
return fmt.Errorf("decrease old owner repository count: %v", err)
14811481
}
14821482

1483-
if err = watchRepo(sess, newOwner.ID, repo.ID, true); err != nil {
1483+
if err = watchRepo(sess, doer.ID, repo.ID, true); err != nil {
14841484
return fmt.Errorf("watchRepo: %v", err)
14851485
} else if err = transferRepoAction(sess, doer, owner, repo); err != nil {
14861486
return fmt.Errorf("transferRepoAction: %v", err)

0 commit comments

Comments
 (0)