mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-06-23 09:30:50 +00:00
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>
This commit is contained in:
parent
462306e263
commit
a4bfef265d
335 changed files with 4191 additions and 3654 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue