mirror of
https://github.com/safing/portbase
synced 2025-09-16 10:09:49 +00:00
Continue work on database module
This commit is contained in:
parent
7ad09b60c1
commit
b8e7f90dbe
25 changed files with 962 additions and 1073 deletions
|
@ -4,17 +4,13 @@ package database
|
|||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
"path"
|
||||
"strings"
|
||||
|
||||
"github.com/Safing/safing-core/database/dbutils"
|
||||
"github.com/Safing/safing-core/log"
|
||||
"github.com/Safing/safing-core/meta"
|
||||
)
|
||||
|
||||
var ErrNotFound = errors.New("database: entry could not be found")
|
||||
// Errors
|
||||
var (
|
||||
ErrNotFound = errors.New("database: entry could not be found")
|
||||
ErrPermissionDenied = errors.New("database: access to record denied")
|
||||
)
|
||||
|
||||
func init() {
|
||||
// if strings.HasSuffix(os.Args[0], ".test") {
|
||||
|
@ -59,84 +55,66 @@ func init() {
|
|||
// return db.Close()
|
||||
// }
|
||||
|
||||
func Get(key *ds.Key) (Model, error) {
|
||||
data, err := db.Get(*key)
|
||||
if err != nil {
|
||||
switch err {
|
||||
case ds.ErrNotFound:
|
||||
return nil, ErrNotFound
|
||||
default:
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
model, ok := data.(Model)
|
||||
if !ok {
|
||||
return nil, errors.New("database did not return model")
|
||||
}
|
||||
return model, nil
|
||||
}
|
||||
// func Get(key *ds.Key) (Model, error) {
|
||||
// data, err := db.Get(*key)
|
||||
// if err != nil {
|
||||
// switch err {
|
||||
// case ds.ErrNotFound:
|
||||
// return nil, ErrNotFound
|
||||
// default:
|
||||
// return nil, err
|
||||
// }
|
||||
// }
|
||||
// model, ok := data.(Model)
|
||||
// if !ok {
|
||||
// return nil, errors.New("database did not return model")
|
||||
// }
|
||||
// return model, nil
|
||||
// }
|
||||
|
||||
func GetAndEnsureModel(namespace *ds.Key, name string, model Model) (Model, error) {
|
||||
newKey := namespace.ChildString(getTypeName(model)).Instance(name)
|
||||
|
||||
data, err := Get(&newKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
newModel, err := EnsureModel(data, model)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
newModel.SetKey(&newKey)
|
||||
|
||||
return newModel, nil
|
||||
}
|
||||
|
||||
func Has(key ds.Key) (exists bool, err error) {
|
||||
return db.Has(key)
|
||||
}
|
||||
|
||||
func Create(key ds.Key, model Model) (err error) {
|
||||
handleCreateSubscriptions(model)
|
||||
err = db.Put(key, model)
|
||||
if err != nil {
|
||||
log.Tracef("database: failed to create entry %s: %s", key, err)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func Update(key ds.Key, model Model) (err error) {
|
||||
handleUpdateSubscriptions(model)
|
||||
err = db.Put(key, model)
|
||||
if err != nil {
|
||||
log.Tracef("database: failed to update entry %s: %s", key, err)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func Delete(key ds.Key) (err error) {
|
||||
handleDeleteSubscriptions(&key)
|
||||
return db.Delete(key)
|
||||
}
|
||||
|
||||
func Query(q dsq.Query) (dsq.Results, error) {
|
||||
return db.Query(q)
|
||||
}
|
||||
|
||||
func RawGet(key ds.Key) (*dbutils.Wrapper, error) {
|
||||
data, err := db.Get(key)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
wrapped, ok := data.(*dbutils.Wrapper)
|
||||
if !ok {
|
||||
return nil, errors.New("returned data is not a wrapper")
|
||||
}
|
||||
return wrapped, nil
|
||||
}
|
||||
|
||||
func RawPut(key ds.Key, value interface{}) error {
|
||||
return db.Put(key, value)
|
||||
}
|
||||
// func Has(key ds.Key) (exists bool, err error) {
|
||||
// return db.Has(key)
|
||||
// }
|
||||
//
|
||||
// func Create(key ds.Key, model Model) (err error) {
|
||||
// handleCreateSubscriptions(model)
|
||||
// err = db.Put(key, model)
|
||||
// if err != nil {
|
||||
// log.Tracef("database: failed to create entry %s: %s", key, err)
|
||||
// }
|
||||
// return err
|
||||
// }
|
||||
//
|
||||
// func Update(key ds.Key, model Model) (err error) {
|
||||
// handleUpdateSubscriptions(model)
|
||||
// err = db.Put(key, model)
|
||||
// if err != nil {
|
||||
// log.Tracef("database: failed to update entry %s: %s", key, err)
|
||||
// }
|
||||
// return err
|
||||
// }
|
||||
//
|
||||
// func Delete(key ds.Key) (err error) {
|
||||
// handleDeleteSubscriptions(&key)
|
||||
// return db.Delete(key)
|
||||
// }
|
||||
//
|
||||
// func Query(q dsq.Query) (dsq.Results, error) {
|
||||
// return db.Query(q)
|
||||
// }
|
||||
//
|
||||
// func RawGet(key ds.Key) (*dbutils.Wrapper, error) {
|
||||
// data, err := db.Get(key)
|
||||
// if err != nil {
|
||||
// return nil, err
|
||||
// }
|
||||
// wrapped, ok := data.(*dbutils.Wrapper)
|
||||
// if !ok {
|
||||
// return nil, errors.New("returned data is not a wrapper")
|
||||
// }
|
||||
// return wrapped, nil
|
||||
// }
|
||||
//
|
||||
// func RawPut(key ds.Key, value interface{}) error {
|
||||
// return db.Put(key, value)
|
||||
// }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue