package datastore import ( "context" "errors" "time" "git.itzana.me/strafesnet/maps-service/pkg/model" ) var ( ErrNotExist = errors.New("resource does not exist") ErroNoRowsAffected = errors.New("query did not affect any rows") ErrInvalidListSort = errors.New("invalid list sort parameter [1,2,3,4]") ) type ListSort uint32 const ( ListSortDisabled ListSort = 0 ListSortDisplayNameAscending ListSort = 1 ListSortDisplayNameDescending ListSort = 2 ListSortDateAscending ListSort = 3 ListSortDateDescending ListSort = 4 ) type Datastore interface { AuditEvents() AuditEvents Mapfixes() Mapfixes Operations() Operations Submissions() Submissions Scripts() Scripts ScriptPolicy() ScriptPolicy } type AuditEvents interface { Get(ctx context.Context, id int64) (model.AuditEvent, error) Create(ctx context.Context, smap model.AuditEvent) (model.AuditEvent, error) Update(ctx context.Context, id int64, values OptionalMap) error Delete(ctx context.Context, id int64) error List(ctx context.Context, filters OptionalMap, page model.Page) ([]model.AuditEvent, error) } type Mapfixes interface { Get(ctx context.Context, id int64) (model.Mapfix, error) GetList(ctx context.Context, id []int64) ([]model.Mapfix, error) Create(ctx context.Context, smap model.Mapfix) (model.Mapfix, error) Update(ctx context.Context, id int64, values OptionalMap) error IfStatusThenUpdate(ctx context.Context, id int64, statuses []model.MapfixStatus, values OptionalMap) error IfStatusThenUpdateAndGet(ctx context.Context, id int64, statuses []model.MapfixStatus, values OptionalMap) (model.Mapfix, error) Delete(ctx context.Context, id int64) error List(ctx context.Context, filters OptionalMap, page model.Page, sort ListSort) ([]model.Mapfix, error) ListWithTotal(ctx context.Context, filters OptionalMap, page model.Page, sort ListSort) (int64, []model.Mapfix, error) } type Operations interface { Get(ctx context.Context, id int32) (model.Operation, error) Create(ctx context.Context, smap model.Operation) (model.Operation, error) Update(ctx context.Context, id int32, values OptionalMap) error Delete(ctx context.Context, id int32) error CountSince(ctx context.Context, owner int64, since time.Time) (int64, error) } type Submissions interface { Get(ctx context.Context, id int64) (model.Submission, error) GetList(ctx context.Context, id []int64) ([]model.Submission, error) Create(ctx context.Context, smap model.Submission) (model.Submission, error) Update(ctx context.Context, id int64, values OptionalMap) error IfStatusThenUpdate(ctx context.Context, id int64, statuses []model.SubmissionStatus, values OptionalMap) error IfStatusThenUpdateAndGet(ctx context.Context, id int64, statuses []model.SubmissionStatus, values OptionalMap) (model.Submission, error) Delete(ctx context.Context, id int64) error List(ctx context.Context, filters OptionalMap, page model.Page, sort ListSort) ([]model.Submission, error) ListWithTotal(ctx context.Context, filters OptionalMap, page model.Page, sort ListSort) (int64, []model.Submission, error) } type Scripts interface { Get(ctx context.Context, id int64) (model.Script, error) Create(ctx context.Context, smap model.Script) (model.Script, error) Update(ctx context.Context, id int64, values OptionalMap) error Delete(ctx context.Context, id int64) error List(ctx context.Context, filters OptionalMap, page model.Page) ([]model.Script, error) } type ScriptPolicy interface { Get(ctx context.Context, id int64) (model.ScriptPolicy, error) GetFromHash(ctx context.Context, hash uint64) (model.ScriptPolicy, error) Create(ctx context.Context, smap model.ScriptPolicy) (model.ScriptPolicy, error) Update(ctx context.Context, id int64, values OptionalMap) error Delete(ctx context.Context, id int64) error List(ctx context.Context, filters OptionalMap, page model.Page) ([]model.ScriptPolicy, error) }