initial public commit
This commit is contained in:
75
daos/param.go
Normal file
75
daos/param.go
Normal file
@@ -0,0 +1,75 @@
|
||||
package daos
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
||||
"github.com/pocketbase/dbx"
|
||||
"github.com/pocketbase/pocketbase/models"
|
||||
"github.com/pocketbase/pocketbase/tools/security"
|
||||
"github.com/pocketbase/pocketbase/tools/types"
|
||||
)
|
||||
|
||||
// ParamQuery returns a new Param select query.
|
||||
func (dao *Dao) ParamQuery() *dbx.SelectQuery {
|
||||
return dao.ModelQuery(&models.Param{})
|
||||
}
|
||||
|
||||
// FindParamByKey finds the first Param model with the provided key.
|
||||
func (dao *Dao) FindParamByKey(key string) (*models.Param, error) {
|
||||
param := &models.Param{}
|
||||
|
||||
err := dao.ParamQuery().
|
||||
AndWhere(dbx.HashExp{"key": key}).
|
||||
Limit(1).
|
||||
One(param)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return param, nil
|
||||
}
|
||||
|
||||
// SaveParam creates or updates a Param model by the provided key-value pair.
|
||||
// The value argument will be encoded as json string.
|
||||
//
|
||||
// If `optEncryptionKey` is provided it will encrypt the value before storing it.
|
||||
func (dao *Dao) SaveParam(key string, value any, optEncryptionKey ...string) error {
|
||||
param, _ := dao.FindParamByKey(key)
|
||||
if param == nil {
|
||||
param = &models.Param{Key: key}
|
||||
}
|
||||
|
||||
var normalizedValue any
|
||||
|
||||
// encrypt if optEncryptionKey is set
|
||||
if len(optEncryptionKey) > 0 && optEncryptionKey[0] != "" {
|
||||
encoded, encodingErr := json.Marshal(value)
|
||||
if encodingErr != nil {
|
||||
return encodingErr
|
||||
}
|
||||
|
||||
encryptVal, encryptErr := security.Encrypt(encoded, optEncryptionKey[0])
|
||||
if encryptErr != nil {
|
||||
return encryptErr
|
||||
}
|
||||
|
||||
normalizedValue = encryptVal
|
||||
} else {
|
||||
normalizedValue = value
|
||||
}
|
||||
|
||||
encodedValue := types.JsonRaw{}
|
||||
if err := encodedValue.Scan(normalizedValue); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
param.Value = encodedValue
|
||||
|
||||
return dao.Save(param)
|
||||
}
|
||||
|
||||
// DeleteParam deletes the provided Param model.
|
||||
func (dao *Dao) DeleteParam(param *models.Param) error {
|
||||
return dao.Delete(param)
|
||||
}
|
||||
Reference in New Issue
Block a user