1
- // Copyright 2014 The Gogs Authors. All rights reserved.
2
- // Copyright 2019 The Gitea Authors. All rights reserved.
1
+ // Copyright 2023 The Gitea Authors. All rights reserved.
3
2
// SPDX-License-Identifier: MIT
4
3
5
- package models
4
+ package user
6
5
7
6
import (
8
7
"context"
@@ -23,47 +22,50 @@ import (
23
22
repo_model "code.gitea.io/gitea/models/repo"
24
23
user_model "code.gitea.io/gitea/models/user"
25
24
"code.gitea.io/gitea/modules/setting"
25
+
26
+ "xorm.io/builder"
26
27
)
27
28
28
- // DeleteUser deletes models associated to an user.
29
- func DeleteUser (ctx context.Context , u * user_model.User , purge bool ) (err error ) {
29
+ // deleteUser deletes models associated to an user.
30
+ func deleteUser (ctx context.Context , u * user_model.User , purge bool ) (err error ) {
30
31
e := db .GetEngine (ctx )
31
32
32
33
// ***** START: Watch *****
33
- watchedRepoIDs := make ([]int64 , 0 , 10 )
34
- if err = e .Table ("watch" ).Cols ("watch.repo_id" ).
35
- Where ("watch.user_id = ?" , u .ID ).And ("watch.mode <>?" , repo_model .WatchModeDont ).Find (& watchedRepoIDs ); err != nil {
34
+ watchedRepoIDs , err := db .FindIDs (ctx , "watch" , "watch.repo_id" ,
35
+ builder.Eq {"watch.user_id" : u .ID }.
36
+ And (builder.Neq {"watch.mode" : repo_model .WatchModeDont }))
37
+ if err != nil {
36
38
return fmt .Errorf ("get all watches: %w" , err )
37
39
}
38
- if _ , err = e . Decr ( "num_watches" ). In ( "id" , watchedRepoIDs ). NoAutoTime (). Update ( new (repo_model.Repository )); err != nil {
40
+ if err = db . DecrByIDs ( ctx , watchedRepoIDs , "num_watches" , new (repo_model.Repository )); err != nil {
39
41
return fmt .Errorf ("decrease repository num_watches: %w" , err )
40
42
}
41
43
// ***** END: Watch *****
42
44
43
45
// ***** START: Star *****
44
- starredRepoIDs := make ([] int64 , 0 , 10 )
45
- if err = e . Table ( "star" ). Cols ( "star.repo_id" ).
46
- Where ( "star.uid = ?" , u . ID ). Find ( & starredRepoIDs ); err != nil {
46
+ starredRepoIDs , err := db . FindIDs ( ctx , "star" , "star.repo_id" ,
47
+ builder. Eq { "star.uid" : u . ID })
48
+ if err != nil {
47
49
return fmt .Errorf ("get all stars: %w" , err )
48
- } else if _ , err = e . Decr ( "num_stars" ). In ( "id" , starredRepoIDs ). NoAutoTime (). Update ( new (repo_model.Repository )); err != nil {
50
+ } else if err = db . DecrByIDs ( ctx , starredRepoIDs , "num_stars" , new (repo_model.Repository )); err != nil {
49
51
return fmt .Errorf ("decrease repository num_stars: %w" , err )
50
52
}
51
53
// ***** END: Star *****
52
54
53
55
// ***** START: Follow *****
54
- followeeIDs := make ([] int64 , 0 , 10 )
55
- if err = e . Table ( "follow" ). Cols ( "follow.follow_id" ).
56
- Where ( "follow.user_id = ?" , u . ID ). Find ( & followeeIDs ); err != nil {
56
+ followeeIDs , err := db . FindIDs ( ctx , "follow" , "follow.follow_id" ,
57
+ builder. Eq { "follow.user_id" : u . ID })
58
+ if err != nil {
57
59
return fmt .Errorf ("get all followees: %w" , err )
58
- } else if _ , err = e . Decr ( "num_followers" ). In ( "id" , followeeIDs ). Update ( new (user_model.User )); err != nil {
60
+ } else if err = db . DecrByIDs ( ctx , followeeIDs , "num_followers" , new (user_model.User )); err != nil {
59
61
return fmt .Errorf ("decrease user num_followers: %w" , err )
60
62
}
61
63
62
- followerIDs := make ([] int64 , 0 , 10 )
63
- if err = e . Table ( "follow" ). Cols ( "follow.user_id" ).
64
- Where ( "follow.follow_id = ?" , u . ID ). Find ( & followerIDs ); err != nil {
64
+ followerIDs , err := db . FindIDs ( ctx , "follow" , "follow.user_id" ,
65
+ builder. Eq { "follow.follow_id" : u . ID })
66
+ if err != nil {
65
67
return fmt .Errorf ("get all followers: %w" , err )
66
- } else if _ , err = e . Decr ( "num_following" ). In ( "id" , followerIDs ). Update ( new (user_model.User )); err != nil {
68
+ } else if err = db . DecrByIDs ( ctx , followerIDs , "num_following" , new (user_model.User )); err != nil {
67
69
return fmt .Errorf ("decrease user num_following: %w" , err )
68
70
}
69
71
// ***** END: Follow *****
@@ -181,7 +183,7 @@ func DeleteUser(ctx context.Context, u *user_model.User, purge bool) (err error)
181
183
}
182
184
// ***** END: ExternalLoginUser *****
183
185
184
- if _ , err = e . ID ( u .ID ). Delete ( new (user_model.User )); err != nil {
186
+ if _ , err = db . DeleteByID ( ctx , u .ID , new (user_model.User )); err != nil {
185
187
return fmt .Errorf ("delete: %w" , err )
186
188
}
187
189
0 commit comments