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)) }