46 lines
1.5 KiB
Go
46 lines
1.5 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
|
|
"git.itzana.me/strafesnet/maps-service/pkg/datastore"
|
|
"git.itzana.me/strafesnet/maps-service/pkg/model"
|
|
)
|
|
|
|
type ScriptPolicyFilter datastore.OptionalMap
|
|
|
|
func NewScriptPolicyFilter() ScriptPolicyFilter {
|
|
filter := datastore.Optional()
|
|
return ScriptPolicyFilter(filter)
|
|
}
|
|
func (filter ScriptPolicyFilter) SetFromScriptHash(from_script_hash int64) {
|
|
// Finally, type safety!
|
|
datastore.OptionalMap(filter).Add("from_script_hash", from_script_hash)
|
|
}
|
|
func (filter ScriptPolicyFilter) SetToScriptID(to_script_id int64) {
|
|
datastore.OptionalMap(filter).Add("to_script_id", to_script_id)
|
|
}
|
|
func (filter ScriptPolicyFilter) SetPolicy(policy int32) {
|
|
datastore.OptionalMap(filter).Add("policy", policy)
|
|
}
|
|
|
|
func (svc *Service) CreateScriptPolicy(ctx context.Context, script model.ScriptPolicy) (model.ScriptPolicy, error) {
|
|
return svc.db.ScriptPolicy().Create(ctx, script)
|
|
}
|
|
|
|
func (svc *Service) ListScriptPolicies(ctx context.Context, filter ScriptPolicyFilter, page model.Page) ([]model.ScriptPolicy, error) {
|
|
return svc.db.ScriptPolicy().List(ctx, datastore.OptionalMap(filter), page)
|
|
}
|
|
|
|
func (svc *Service) DeleteScriptPolicy(ctx context.Context, id int64) error {
|
|
return svc.db.ScriptPolicy().Delete(ctx, id)
|
|
}
|
|
|
|
func (svc *Service) GetScriptPolicy(ctx context.Context, id int64) (model.ScriptPolicy, error) {
|
|
return svc.db.ScriptPolicy().Get(ctx, id)
|
|
}
|
|
|
|
func (svc *Service) UpdateScriptPolicy(ctx context.Context, id int64, pmap ScriptPolicyFilter) error {
|
|
return svc.db.ScriptPolicy().Update(ctx, id, datastore.OptionalMap(pmap))
|
|
}
|