From 06b85ac5ba2c04ec7172380287fd15733f4b8345 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 24 Jan 2026 16:11:35 +0000 Subject: [PATCH] Convert remaining files from XORM to GORM and fix unused imports Co-authored-by: unknwon <2946214+unknwon@users.noreply.github.com> --- internal/database/issue_label.go | 1 - internal/database/repo_editor.go | 54 +++++++++++++++---------------- internal/database/repositories.go | 1 - internal/database/ssh_key.go | 16 ++++++--- internal/database/two_factor.go | 48 ++++++++++++--------------- 5 files changed, 57 insertions(+), 63 deletions(-) diff --git a/internal/database/issue_label.go b/internal/database/issue_label.go index 5ecb8ce09..be62897a2 100644 --- a/internal/database/issue_label.go +++ b/internal/database/issue_label.go @@ -12,7 +12,6 @@ import ( "gogs.io/gogs/internal/errutil" "gogs.io/gogs/internal/lazyregexp" - "gogs.io/gogs/internal/tool" ) var labelColorPattern = lazyregexp.New("#([a-fA-F0-9]{6})") diff --git a/internal/database/repo_editor.go b/internal/database/repo_editor.go index f326eaa65..d4fd45e99 100644 --- a/internal/database/repo_editor.go +++ b/internal/database/repo_editor.go @@ -14,6 +14,7 @@ import ( "github.com/cockroachdb/errors" gouuid "github.com/satori/go.uuid" "github.com/unknwon/com" + "gorm.io/gorm" "github.com/gogs/git-module" @@ -441,7 +442,7 @@ func NewUpload(name string, buf []byte, file multipart.File) (_ *Upload, err err return nil, errors.Newf("copy: %v", err) } - if _, err := x.Insert(upload); err != nil { + if err := db.Create(upload).Error; err != nil { return nil, err } @@ -450,11 +451,12 @@ func NewUpload(name string, buf []byte, file multipart.File) (_ *Upload, err err func GetUploadByUUID(uuid string) (*Upload, error) { upload := &Upload{UUID: uuid} - has, err := x.Get(upload) + err := db.Where("uuid = ?", uuid).First(upload).Error if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return nil, ErrUploadNotExist{0, uuid} + } return nil, err - } else if !has { - return nil, ErrUploadNotExist{0, uuid} } return upload, nil } @@ -466,7 +468,7 @@ func GetUploadsByUUIDs(uuids []string) ([]*Upload, error) { // Silently drop invalid uuids. uploads := make([]*Upload, 0, len(uuids)) - return uploads, x.In("uuid", uuids).Find(&uploads) + return uploads, db.Where("uuid IN ?", uuids).Find(&uploads).Error } func DeleteUploads(uploads ...*Upload) (err error) { @@ -474,32 +476,28 @@ func DeleteUploads(uploads ...*Upload) (err error) { return nil } - sess := x.NewSession() - defer sess.Close() - if err = sess.Begin(); err != nil { - return err - } - - ids := make([]int64, len(uploads)) - for i := 0; i < len(uploads); i++ { - ids[i] = uploads[i].ID - } - if _, err = sess.In("id", ids).Delete(new(Upload)); err != nil { - return errors.Newf("delete uploads: %v", err) - } - - for _, upload := range uploads { - localPath := upload.LocalPath() - if !osutil.IsFile(localPath) { - continue + return db.Transaction(func(tx *gorm.DB) error { + ids := make([]int64, len(uploads)) + for i := 0; i < len(uploads); i++ { + ids[i] = uploads[i].ID + } + if err := tx.Where("id IN ?", ids).Delete(new(Upload)).Error; err != nil { + return errors.Newf("delete uploads: %v", err) } - if err := os.Remove(localPath); err != nil { - return errors.Newf("remove upload: %v", err) - } - } + for _, upload := range uploads { + localPath := upload.LocalPath() + if !osutil.IsFile(localPath) { + continue + } - return sess.Commit() + if err := os.Remove(localPath); err != nil { + return errors.Newf("remove upload: %v", err) + } + } + + return nil + }) } func DeleteUpload(u *Upload) error { diff --git a/internal/database/repositories.go b/internal/database/repositories.go index 420e7d6b0..cb45c01aa 100644 --- a/internal/database/repositories.go +++ b/internal/database/repositories.go @@ -4,7 +4,6 @@ import ( "context" "fmt" "strings" - "time" "github.com/cockroachdb/errors" api "github.com/gogs/go-gogs-client" diff --git a/internal/database/ssh_key.go b/internal/database/ssh_key.go index 662c4c5de..0bb0d52e8 100644 --- a/internal/database/ssh_key.go +++ b/internal/database/ssh_key.go @@ -521,15 +521,21 @@ func RewriteAuthorizedKeys() error { } defer os.Remove(tmpPath) - err = x.Iterate(new(PublicKey), func(idx int, bean any) (err error) { - _, err = f.WriteString((bean.(*PublicKey)).AuthorizedString()) - return err - }) - _ = f.Close() + var keys []*PublicKey + err = db.Find(&keys).Error if err != nil { + _ = f.Close() return err } + for _, key := range keys { + if _, err = f.WriteString(key.AuthorizedString()); err != nil { + _ = f.Close() + return err + } + } + _ = f.Close() + if com.IsExist(fpath) { if err = os.Remove(fpath); err != nil { return err diff --git a/internal/database/two_factor.go b/internal/database/two_factor.go index b186d8474..3967f2ec9 100644 --- a/internal/database/two_factor.go +++ b/internal/database/two_factor.go @@ -38,20 +38,16 @@ func (t *TwoFactor) ValidateTOTP(passcode string) (bool, error) { } // DeleteTwoFactor removes two-factor authentication token and recovery codes of given user. -func DeleteTwoFactor(userID int64) (err error) { - sess := x.NewSession() - defer sess.Close() - if err = sess.Begin(); err != nil { - return err - } - - if _, err = sess.Where("user_id = ?", userID).Delete(new(TwoFactor)); err != nil { - return errors.Newf("delete two-factor: %v", err) - } else if err = deleteRecoveryCodesByUserID(sess, userID); err != nil { - return errors.Newf("deleteRecoveryCodesByUserID: %v", err) - } - - return sess.Commit() +func DeleteTwoFactor(userID int64) error { + return db.Transaction(func(tx *gorm.DB) error { + if err := tx.Where("user_id = ?", userID).Delete(new(TwoFactor)).Error; err != nil { + return errors.Newf("delete two-factor: %v", err) + } + if err := deleteRecoveryCodesByUserID(tx, userID); err != nil { + return errors.Newf("deleteRecoveryCodesByUserID: %v", err) + } + return nil + }) } // TwoFactorRecoveryCode represents a two-factor authentication recovery code. @@ -65,7 +61,7 @@ type TwoFactorRecoveryCode struct { // GetRecoveryCodesByUserID returns all recovery codes of given user. func GetRecoveryCodesByUserID(userID int64) ([]*TwoFactorRecoveryCode, error) { recoveryCodes := make([]*TwoFactorRecoveryCode, 0, 10) - return recoveryCodes, x.Where("user_id = ?", userID).Find(&recoveryCodes) + return recoveryCodes, db.Where("user_id = ?", userID).Find(&recoveryCodes).Error } func deleteRecoveryCodesByUserID(e *gorm.DB, userID int64) error { @@ -79,19 +75,15 @@ func RegenerateRecoveryCodes(userID int64) error { return errors.Newf("generateRecoveryCodes: %v", err) } - sess := x.NewSession() - defer sess.Close() - if err = sess.Begin(); err != nil { - return err - } - - if err = deleteRecoveryCodesByUserID(sess, userID); err != nil { - return errors.Newf("deleteRecoveryCodesByUserID: %v", err) - } else if _, err = sess.Insert(recoveryCodes); err != nil { - return errors.Newf("insert new recovery codes: %v", err) - } - - return sess.Commit() + return db.Transaction(func(tx *gorm.DB) error { + if err := deleteRecoveryCodesByUserID(tx, userID); err != nil { + return errors.Newf("deleteRecoveryCodesByUserID: %v", err) + } + if err := tx.Create(recoveryCodes).Error; err != nil { + return errors.Newf("insert new recovery codes: %v", err) + } + return nil + }) } type ErrTwoFactorRecoveryCodeNotFound struct {