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.
32// SPDX-License-Identifier: MIT
43
5- package models
4+ package user
65
76import (
87 "context"
@@ -23,47 +22,50 @@ import (
2322 repo_model "code.gitea.io/gitea/models/repo"
2423 user_model "code.gitea.io/gitea/models/user"
2524 "code.gitea.io/gitea/modules/setting"
25+
26+ "xorm.io/builder"
2627)
2728
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 ) {
3031 e := db .GetEngine (ctx )
3132
3233 // ***** 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 {
3638 return fmt .Errorf ("get all watches: %w" , err )
3739 }
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 {
3941 return fmt .Errorf ("decrease repository num_watches: %w" , err )
4042 }
4143 // ***** END: Watch *****
4244
4345 // ***** 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 {
4749 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 {
4951 return fmt .Errorf ("decrease repository num_stars: %w" , err )
5052 }
5153 // ***** END: Star *****
5254
5355 // ***** 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 {
5759 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 {
5961 return fmt .Errorf ("decrease user num_followers: %w" , err )
6062 }
6163
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 {
6567 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 {
6769 return fmt .Errorf ("decrease user num_following: %w" , err )
6870 }
6971 // ***** END: Follow *****
@@ -181,7 +183,7 @@ func DeleteUser(ctx context.Context, u *user_model.User, purge bool) (err error)
181183 }
182184 // ***** END: ExternalLoginUser *****
183185
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 {
185187 return fmt .Errorf ("delete: %w" , err )
186188 }
187189
0 commit comments