121 lines
4.8 KiB
Go
121 lines
4.8 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
|
|
"git.itzana.me/strafesnet/maps-service/pkg/datastore"
|
|
"git.itzana.me/strafesnet/maps-service/pkg/model"
|
|
)
|
|
|
|
type SubmissionUpdate datastore.OptionalMap
|
|
|
|
func NewSubmissionUpdate() SubmissionUpdate {
|
|
update := datastore.Optional()
|
|
return SubmissionUpdate(update)
|
|
}
|
|
|
|
func (update SubmissionUpdate) SetDisplayName(display_name string) {
|
|
datastore.OptionalMap(update).Add("display_name", display_name)
|
|
}
|
|
func (update SubmissionUpdate) SetCreator(creator string) {
|
|
datastore.OptionalMap(update).Add("creator", creator)
|
|
}
|
|
func (update SubmissionUpdate) SetGameID(game_id uint32) {
|
|
datastore.OptionalMap(update).Add("game_id", game_id)
|
|
}
|
|
func (update SubmissionUpdate) SetSubmitter(submitter uint64) {
|
|
datastore.OptionalMap(update).Add("submitter", submitter)
|
|
}
|
|
func (update SubmissionUpdate) SetAssetID(asset_id uint64) {
|
|
datastore.OptionalMap(update).Add("asset_id", asset_id)
|
|
}
|
|
func (update SubmissionUpdate) SetAssetVersion(asset_version uint64) {
|
|
datastore.OptionalMap(update).Add("asset_version", asset_version)
|
|
}
|
|
func (update SubmissionUpdate) SetValidatedAssetID(validated_asset_id uint64) {
|
|
datastore.OptionalMap(update).Add("validated_asset_id", validated_asset_id)
|
|
}
|
|
func (update SubmissionUpdate) SetValidatedAssetVersion(validated_asset_version uint64) {
|
|
datastore.OptionalMap(update).Add("validated_asset_version", validated_asset_version)
|
|
}
|
|
func (update SubmissionUpdate) SetCompleted(completed bool) {
|
|
datastore.OptionalMap(update).Add("completed", completed)
|
|
}
|
|
func (update SubmissionUpdate) SetUploadedAssetID(uploaded_asset_id uint64) {
|
|
datastore.OptionalMap(update).Add("uploaded_asset_id", uploaded_asset_id)
|
|
}
|
|
func (update SubmissionUpdate) SetStatusID(status_id model.SubmissionStatus) {
|
|
datastore.OptionalMap(update).Add("status_id", status_id)
|
|
}
|
|
func (update SubmissionUpdate) SetDescription(description string) {
|
|
datastore.OptionalMap(update).Add("description", description)
|
|
}
|
|
|
|
type SubmissionFilter datastore.OptionalMap
|
|
|
|
func NewSubmissionFilter(
|
|
) SubmissionFilter {
|
|
filter := datastore.Optional()
|
|
return SubmissionFilter(filter)
|
|
}
|
|
func (update SubmissionFilter) SetDisplayName(display_name string) {
|
|
datastore.OptionalMap(update).Add("display_name", display_name)
|
|
}
|
|
func (update SubmissionFilter) SetCreator(creator string) {
|
|
datastore.OptionalMap(update).Add("creator", creator)
|
|
}
|
|
func (update SubmissionFilter) SetGameID(game_id uint32) {
|
|
datastore.OptionalMap(update).Add("game_id", game_id)
|
|
}
|
|
func (update SubmissionFilter) SetSubmitter(submitter uint64) {
|
|
datastore.OptionalMap(update).Add("submitter", submitter)
|
|
}
|
|
func (update SubmissionFilter) SetAssetID(asset_id uint64) {
|
|
datastore.OptionalMap(update).Add("asset_id", asset_id)
|
|
}
|
|
func (update SubmissionFilter) SetAssetVersion(asset_version uint64) {
|
|
datastore.OptionalMap(update).Add("asset_version", asset_version)
|
|
}
|
|
func (update SubmissionFilter) SetUploadedAssetID(uploaded_asset_id uint64) {
|
|
datastore.OptionalMap(update).Add("uploaded_asset_id", uploaded_asset_id)
|
|
}
|
|
func (update SubmissionFilter) SetStatuses(statuses []model.SubmissionStatus) {
|
|
datastore.OptionalMap(update).Add("status_id", statuses)
|
|
}
|
|
|
|
func (svc *Service) CreateSubmission(ctx context.Context, script model.Submission) (model.Submission, error) {
|
|
return svc.db.Submissions().Create(ctx, script)
|
|
}
|
|
|
|
func (svc *Service) ListSubmissions(ctx context.Context, filter SubmissionFilter, page model.Page, sort datastore.ListSort) ([]model.Submission, error) {
|
|
return svc.db.Submissions().List(ctx, datastore.OptionalMap(filter), page, sort)
|
|
}
|
|
|
|
func (svc *Service) ListSubmissionsWithTotal(ctx context.Context, filter SubmissionFilter, page model.Page, sort datastore.ListSort) (int64, []model.Submission, error) {
|
|
return svc.db.Submissions().ListWithTotal(ctx, datastore.OptionalMap(filter), page, sort)
|
|
}
|
|
|
|
func (svc *Service) DeleteSubmission(ctx context.Context, id int64) error {
|
|
return svc.db.Submissions().Delete(ctx, id)
|
|
}
|
|
|
|
func (svc *Service) GetSubmission(ctx context.Context, id int64) (model.Submission, error) {
|
|
return svc.db.Submissions().Get(ctx, id)
|
|
}
|
|
|
|
func (svc *Service) GetSubmissionList(ctx context.Context, ids []int64) ([]model.Submission, error) {
|
|
return svc.db.Submissions().GetList(ctx, ids)
|
|
}
|
|
|
|
func (svc *Service) UpdateSubmission(ctx context.Context, id int64, pmap SubmissionUpdate) error {
|
|
return svc.db.Submissions().Update(ctx, id, datastore.OptionalMap(pmap))
|
|
}
|
|
|
|
func (svc *Service) UpdateSubmissionIfStatus(ctx context.Context, id int64, statuses []model.SubmissionStatus, pmap SubmissionUpdate) error {
|
|
return svc.db.Submissions().IfStatusThenUpdate(ctx, id, statuses, datastore.OptionalMap(pmap))
|
|
}
|
|
|
|
func (svc *Service) UpdateAndGetSubmissionIfStatus(ctx context.Context, id int64, statuses []model.SubmissionStatus, pmap SubmissionUpdate) (model.Submission, error) {
|
|
return svc.db.Submissions().IfStatusThenUpdateAndGet(ctx, id, statuses, datastore.OptionalMap(pmap))
|
|
}
|