summaryrefslogtreecommitdiffstats
path: root/models/ssh_key.go
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2021-09-19 19:49:59 +0800
committerGitHub <noreply@github.com>2021-09-19 19:49:59 +0800
commita4bfef265d9e512830350635a0489c2cdcd6508f (patch)
tree1e3c2ec94276dfcb2f8ba73a2ac075ba39c4a34a /models/ssh_key.go
parent462306e263db5a809dbe2cdf62e99307aeff28de (diff)
downloadgitea-a4bfef265d9e512830350635a0489c2cdcd6508f.tar.gz
gitea-a4bfef265d9e512830350635a0489c2cdcd6508f.zip
Move db related basic functions to models/db (#17075)
* Move db related basic functions to models/db * Fix lint * Fix lint * Fix test * Fix lint * Fix lint * revert unnecessary change * Fix test * Fix wrong replace string * Use *Context * Correct committer spelling and fix wrong replaced words Co-authored-by: zeripath <art27@cantab.net>
Diffstat (limited to 'models/ssh_key.go')
-rw-r--r--models/ssh_key.go37
1 files changed, 21 insertions, 16 deletions
diff --git a/models/ssh_key.go b/models/ssh_key.go
index a4745d8e39..04be4ce605 100644
--- a/models/ssh_key.go
+++ b/models/ssh_key.go
@@ -10,6 +10,7 @@ import (
"strings"
"time"
+ "code.gitea.io/gitea/models/db"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/timeutil"
"code.gitea.io/gitea/modules/util"
@@ -47,6 +48,10 @@ type PublicKey struct {
HasUsed bool `xorm:"-"`
}
+func init() {
+ db.RegisterModel(new(PublicKey))
+}
+
// AfterLoad is invoked from XORM after setting the values of all fields of this object.
func (key *PublicKey) AfterLoad() {
key.HasUsed = key.UpdatedUnix > key.CreatedUnix
@@ -65,7 +70,7 @@ func (key *PublicKey) AuthorizedString() string {
return AuthorizedStringForKey(key)
}
-func addKey(e Engine, key *PublicKey) (err error) {
+func addKey(e db.Engine, key *PublicKey) (err error) {
if len(key.Fingerprint) == 0 {
key.Fingerprint, err = calcFingerprint(key.Content)
if err != nil {
@@ -90,7 +95,7 @@ func AddPublicKey(ownerID int64, name, content string, loginSourceID int64) (*Pu
return nil, err
}
- sess := x.NewSession()
+ sess := db.DefaultContext().NewSession()
defer sess.Close()
if err = sess.Begin(); err != nil {
return nil, err
@@ -129,7 +134,7 @@ func AddPublicKey(ownerID int64, name, content string, loginSourceID int64) (*Pu
// GetPublicKeyByID returns public key by given ID.
func GetPublicKeyByID(keyID int64) (*PublicKey, error) {
key := new(PublicKey)
- has, err := x.
+ has, err := db.DefaultContext().Engine().
ID(keyID).
Get(key)
if err != nil {
@@ -140,7 +145,7 @@ func GetPublicKeyByID(keyID int64) (*PublicKey, error) {
return key, nil
}
-func searchPublicKeyByContentWithEngine(e Engine, content string) (*PublicKey, error) {
+func searchPublicKeyByContentWithEngine(e db.Engine, content string) (*PublicKey, error) {
key := new(PublicKey)
has, err := e.
Where("content like ?", content+"%").
@@ -156,10 +161,10 @@ func searchPublicKeyByContentWithEngine(e Engine, content string) (*PublicKey, e
// SearchPublicKeyByContent searches content as prefix (leak e-mail part)
// and returns public key found.
func SearchPublicKeyByContent(content string) (*PublicKey, error) {
- return searchPublicKeyByContentWithEngine(x, content)
+ return searchPublicKeyByContentWithEngine(db.DefaultContext().Engine(), content)
}
-func searchPublicKeyByContentExactWithEngine(e Engine, content string) (*PublicKey, error) {
+func searchPublicKeyByContentExactWithEngine(e db.Engine, content string) (*PublicKey, error) {
key := new(PublicKey)
has, err := e.
Where("content = ?", content).
@@ -175,7 +180,7 @@ func searchPublicKeyByContentExactWithEngine(e Engine, content string) (*PublicK
// SearchPublicKeyByContentExact searches content
// and returns public key found.
func SearchPublicKeyByContentExact(content string) (*PublicKey, error) {
- return searchPublicKeyByContentExactWithEngine(x, content)
+ return searchPublicKeyByContentExactWithEngine(db.DefaultContext().Engine(), content)
}
// SearchPublicKey returns a list of public keys matching the provided arguments.
@@ -188,12 +193,12 @@ func SearchPublicKey(uid int64, fingerprint string) ([]*PublicKey, error) {
if fingerprint != "" {
cond = cond.And(builder.Eq{"fingerprint": fingerprint})
}
- return keys, x.Where(cond).Find(&keys)
+ return keys, db.DefaultContext().Engine().Where(cond).Find(&keys)
}
// ListPublicKeys returns a list of public keys belongs to given user.
func ListPublicKeys(uid int64, listOptions ListOptions) ([]*PublicKey, error) {
- sess := x.Where("owner_id = ? AND type != ?", uid, KeyTypePrincipal)
+ sess := db.DefaultContext().Engine().Where("owner_id = ? AND type != ?", uid, KeyTypePrincipal)
if listOptions.Page != 0 {
sess = setSessionPagination(sess, &listOptions)
@@ -207,14 +212,14 @@ func ListPublicKeys(uid int64, listOptions ListOptions) ([]*PublicKey, error) {
// CountPublicKeys count public keys a user has
func CountPublicKeys(userID int64) (int64, error) {
- sess := x.Where("owner_id = ? AND type != ?", userID, KeyTypePrincipal)
+ sess := db.DefaultContext().Engine().Where("owner_id = ? AND type != ?", userID, KeyTypePrincipal)
return sess.Count(&PublicKey{})
}
// ListPublicKeysBySource returns a list of synchronized public keys for a given user and login source.
func ListPublicKeysBySource(uid, loginSourceID int64) ([]*PublicKey, error) {
keys := make([]*PublicKey, 0, 5)
- return keys, x.
+ return keys, db.DefaultContext().Engine().
Where("owner_id = ? AND login_source_id = ?", uid, loginSourceID).
Find(&keys)
}
@@ -223,13 +228,13 @@ func ListPublicKeysBySource(uid, loginSourceID int64) ([]*PublicKey, error) {
func UpdatePublicKeyUpdated(id int64) error {
// Check if key exists before update as affected rows count is unreliable
// and will return 0 affected rows if two updates are made at the same time
- if cnt, err := x.ID(id).Count(&PublicKey{}); err != nil {
+ if cnt, err := db.DefaultContext().Engine().ID(id).Count(&PublicKey{}); err != nil {
return err
} else if cnt != 1 {
return ErrKeyNotExist{id}
}
- _, err := x.ID(id).Cols("updated_unix").Update(&PublicKey{
+ _, err := db.DefaultContext().Engine().ID(id).Cols("updated_unix").Update(&PublicKey{
UpdatedUnix: timeutil.TimeStampNow(),
})
if err != nil {
@@ -239,7 +244,7 @@ func UpdatePublicKeyUpdated(id int64) error {
}
// deletePublicKeys does the actual key deletion but does not update authorized_keys file.
-func deletePublicKeys(e Engine, keyIDs ...int64) error {
+func deletePublicKeys(e db.Engine, keyIDs ...int64) error {
if len(keyIDs) == 0 {
return nil
}
@@ -328,7 +333,7 @@ func DeletePublicKey(doer *User, id int64) (err error) {
return ErrKeyAccessDenied{doer.ID, key.ID, "public"}
}
- sess := x.NewSession()
+ sess := db.DefaultContext().NewSession()
defer sess.Close()
if err = sess.Begin(); err != nil {
return err
@@ -353,7 +358,7 @@ func DeletePublicKey(doer *User, id int64) (err error) {
// deleteKeysMarkedForDeletion returns true if ssh keys needs update
func deleteKeysMarkedForDeletion(keys []string) (bool, error) {
// Start session
- sess := x.NewSession()
+ sess := db.DefaultContext().NewSession()
defer sess.Close()
if err := sess.Begin(); err != nil {
return false, err