79 lines
2.5 KiB
Go
79 lines
2.5 KiB
Go
|
|
package group
|
||
|
|
|
||
|
|
import (
|
||
|
|
"cloud.o-forge.io/core/oc-lib/dbs"
|
||
|
|
"cloud.o-forge.io/core/oc-lib/logs"
|
||
|
|
"cloud.o-forge.io/core/oc-lib/models/utils"
|
||
|
|
"cloud.o-forge.io/core/oc-lib/tools"
|
||
|
|
)
|
||
|
|
|
||
|
|
type groupMongoAccessor struct {
|
||
|
|
utils.AbstractAccessor // AbstractAccessor contains the basic fields of an accessor (model, caller)
|
||
|
|
}
|
||
|
|
|
||
|
|
// New creates a new instance of the groupMongoAccessor
|
||
|
|
func NewShallowAccessor() *groupMongoAccessor {
|
||
|
|
return &groupMongoAccessor{
|
||
|
|
AbstractAccessor: utils.AbstractAccessor{
|
||
|
|
Logger: logs.CreateLogger(tools.GROUP.String()), // Create a logger with the data type
|
||
|
|
Type: tools.GROUP,
|
||
|
|
},
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func NewAccessor(request *tools.APIRequest) *groupMongoAccessor {
|
||
|
|
return &groupMongoAccessor{
|
||
|
|
AbstractAccessor: utils.AbstractAccessor{
|
||
|
|
Logger: logs.CreateLogger(tools.GROUP.String()), // Create a logger with the data type
|
||
|
|
Request: request,
|
||
|
|
Type: tools.GROUP,
|
||
|
|
},
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/*
|
||
|
|
* Nothing special here, just the basic CRUD operations
|
||
|
|
*/
|
||
|
|
|
||
|
|
func (wfa *groupMongoAccessor) DeleteOne(id string) (utils.DBObject, int, error) {
|
||
|
|
return utils.GenericDeleteOne(id, wfa)
|
||
|
|
}
|
||
|
|
|
||
|
|
func (wfa *groupMongoAccessor) UpdateOne(set utils.DBObject, id string) (utils.DBObject, int, error) {
|
||
|
|
return utils.GenericUpdateOne(set.(*Group), id, wfa, &Group{})
|
||
|
|
}
|
||
|
|
|
||
|
|
func (wfa *groupMongoAccessor) StoreOne(data utils.DBObject) (utils.DBObject, int, error) {
|
||
|
|
return utils.GenericStoreOne(data.(*Group), wfa)
|
||
|
|
}
|
||
|
|
|
||
|
|
func (wfa *groupMongoAccessor) CopyOne(data utils.DBObject) (utils.DBObject, int, error) {
|
||
|
|
return utils.GenericStoreOne(data, wfa)
|
||
|
|
}
|
||
|
|
|
||
|
|
func (dca *groupMongoAccessor) LoadOne(id string) (utils.DBObject, int, error) {
|
||
|
|
return utils.GenericLoadOne[*Group](id, func(d utils.DBObject) (utils.DBObject, int, error) {
|
||
|
|
return d, 200, nil
|
||
|
|
}, dca)
|
||
|
|
}
|
||
|
|
|
||
|
|
func (wfa *groupMongoAccessor) LoadAll(isDraft bool) ([]utils.ShallowDBObject, int, error) {
|
||
|
|
return utils.GenericLoadAll[*Group](func(d utils.DBObject) utils.ShallowDBObject {
|
||
|
|
return d
|
||
|
|
}, isDraft, wfa)
|
||
|
|
}
|
||
|
|
|
||
|
|
func (wfa *groupMongoAccessor) Search(filters *dbs.Filters, search string, isDraft bool) ([]utils.ShallowDBObject, int, error) {
|
||
|
|
return utils.GenericSearch[*Group](filters, search, wfa.GetDefaultFilter(search),
|
||
|
|
func(d utils.DBObject) utils.ShallowDBObject {
|
||
|
|
return d
|
||
|
|
}, isDraft, wfa)
|
||
|
|
}
|
||
|
|
func (a *groupMongoAccessor) GetDefaultFilter(search string) *dbs.Filters {
|
||
|
|
return &dbs.Filters{
|
||
|
|
Or: map[string][]dbs.Filter{ // search by name if no filters are provided
|
||
|
|
"abstractobject.name": {{Operator: dbs.LIKE.String(), Value: search}},
|
||
|
|
},
|
||
|
|
}
|
||
|
|
}
|