51 lines
1.6 KiB
Go
51 lines
1.6 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
|
|
"git.itzana.me/strafesnet/maps-service/pkg/datastore"
|
|
"git.itzana.me/strafesnet/maps-service/pkg/model"
|
|
)
|
|
|
|
type ScriptFilter datastore.OptionalMap
|
|
|
|
func NewScriptFilter() ScriptFilter {
|
|
filter := datastore.Optional()
|
|
return ScriptFilter(filter)
|
|
}
|
|
func (filter ScriptFilter) SetName(name string) {
|
|
datastore.OptionalMap(filter).Add("name", name)
|
|
}
|
|
func (filter ScriptFilter) SetSource(source string) {
|
|
datastore.OptionalMap(filter).Add("source", source)
|
|
}
|
|
func (filter ScriptFilter) SetHash(hash int64) {
|
|
datastore.OptionalMap(filter).Add("hash", hash)
|
|
}
|
|
func (filter ScriptFilter) SetResourceType(resource_type int32) {
|
|
datastore.OptionalMap(filter).Add("resource_type", resource_type)
|
|
}
|
|
func (filter ScriptFilter) SetResourceID(resource_id int64) {
|
|
datastore.OptionalMap(filter).Add("resource_id", resource_id)
|
|
}
|
|
|
|
func (svc *Service) CreateScript(ctx context.Context, script model.Script) (model.Script, error) {
|
|
return svc.db.Scripts().Create(ctx, script)
|
|
}
|
|
|
|
func (svc *Service) ListScripts(ctx context.Context, filter ScriptFilter, page model.Page) ([]model.Script, error) {
|
|
return svc.db.Scripts().List(ctx, datastore.OptionalMap(filter), page)
|
|
}
|
|
|
|
func (svc *Service) DeleteScript(ctx context.Context, id int64) error {
|
|
return svc.db.Scripts().Delete(ctx, id)
|
|
}
|
|
|
|
func (svc *Service) GetScript(ctx context.Context, id int64) (model.Script, error) {
|
|
return svc.db.Scripts().Get(ctx, id)
|
|
}
|
|
|
|
func (svc *Service) UpdateScript(ctx context.Context, id int64, pmap ScriptFilter) error {
|
|
return svc.db.Scripts().Update(ctx, id, datastore.OptionalMap(pmap))
|
|
}
|