All checks were successful
continuous-integration/drone/push Build is passing
Pull in validator changes and full ui rework to remove nextjs. Co-authored-by: Rhys Lloyd <krakow20@gmail.com> Reviewed-on: #286 Reviewed-by: Rhys Lloyd <quaternions@noreply@itzana.me> Co-authored-by: itzaname <me@sliving.io> Co-committed-by: itzaname <me@sliving.io>
106 lines
3.3 KiB
Go
106 lines
3.3 KiB
Go
package web_api
|
|
|
|
import (
|
|
"context"
|
|
|
|
"git.itzana.me/strafesnet/maps-service/pkg/api"
|
|
"git.itzana.me/strafesnet/maps-service/pkg/datastore"
|
|
"git.itzana.me/strafesnet/maps-service/pkg/model"
|
|
"git.itzana.me/strafesnet/maps-service/pkg/service"
|
|
)
|
|
|
|
// GET /stats
|
|
func (svc *Service) GetStats(ctx context.Context) (*api.Stats, error) {
|
|
// Get total submissions count
|
|
totalSubmissions, _, err := svc.inner.ListSubmissionsWithTotal(ctx, service.NewSubmissionFilter(), model.Page{
|
|
Number: 1,
|
|
Size: 0, // We only want the count, not the items
|
|
}, datastore.ListSortDisabled)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// Get total mapfixes count
|
|
totalMapfixes, _, err := svc.inner.ListMapfixesWithTotal(ctx, service.NewMapfixFilter(), model.Page{
|
|
Number: 1,
|
|
Size: 0, // We only want the count, not the items
|
|
}, datastore.ListSortDisabled)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// Get released submissions count
|
|
releasedSubmissionsFilter := service.NewSubmissionFilter()
|
|
releasedSubmissionsFilter.SetStatuses([]model.SubmissionStatus{model.SubmissionStatusReleased})
|
|
releasedSubmissions, _, err := svc.inner.ListSubmissionsWithTotal(ctx, releasedSubmissionsFilter, model.Page{
|
|
Number: 1,
|
|
Size: 0,
|
|
}, datastore.ListSortDisabled)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// Get released mapfixes count
|
|
releasedMapfixesFilter := service.NewMapfixFilter()
|
|
releasedMapfixesFilter.SetStatuses([]model.MapfixStatus{model.MapfixStatusReleased})
|
|
releasedMapfixes, _, err := svc.inner.ListMapfixesWithTotal(ctx, releasedMapfixesFilter, model.Page{
|
|
Number: 1,
|
|
Size: 0,
|
|
}, datastore.ListSortDisabled)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// Get submitted submissions count (under review)
|
|
submittedSubmissionsFilter := service.NewSubmissionFilter()
|
|
submittedSubmissionsFilter.SetStatuses([]model.SubmissionStatus{
|
|
model.SubmissionStatusUnderConstruction,
|
|
model.SubmissionStatusChangesRequested,
|
|
model.SubmissionStatusSubmitting,
|
|
model.SubmissionStatusSubmitted,
|
|
model.SubmissionStatusAcceptedUnvalidated,
|
|
model.SubmissionStatusValidating,
|
|
model.SubmissionStatusValidated,
|
|
model.SubmissionStatusUploading,
|
|
model.SubmissionStatusUploaded,
|
|
})
|
|
submittedSubmissions, _, err := svc.inner.ListSubmissionsWithTotal(ctx, submittedSubmissionsFilter, model.Page{
|
|
Number: 1,
|
|
Size: 0,
|
|
}, datastore.ListSortDisabled)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
// Get submitted mapfixes count (under review)
|
|
submittedMapfixesFilter := service.NewMapfixFilter()
|
|
submittedMapfixesFilter.SetStatuses([]model.MapfixStatus{
|
|
model.MapfixStatusUnderConstruction,
|
|
model.MapfixStatusChangesRequested,
|
|
model.MapfixStatusSubmitting,
|
|
model.MapfixStatusSubmitted,
|
|
model.MapfixStatusAcceptedUnvalidated,
|
|
model.MapfixStatusValidating,
|
|
model.MapfixStatusValidated,
|
|
model.MapfixStatusUploading,
|
|
model.MapfixStatusUploaded,
|
|
model.MapfixStatusReleasing,
|
|
})
|
|
submittedMapfixes, _, err := svc.inner.ListMapfixesWithTotal(ctx, submittedMapfixesFilter, model.Page{
|
|
Number: 1,
|
|
Size: 0,
|
|
}, datastore.ListSortDisabled)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &api.Stats{
|
|
TotalSubmissions: totalSubmissions,
|
|
TotalMapfixes: totalMapfixes,
|
|
ReleasedSubmissions: releasedSubmissions,
|
|
ReleasedMapfixes: releasedMapfixes,
|
|
SubmittedSubmissions: submittedSubmissions,
|
|
SubmittedMapfixes: submittedMapfixes,
|
|
}, nil
|
|
}
|