feat: Filters for datasets enpoint
This commit is contained in:
@@ -26,8 +26,8 @@ const maxParseBytes = 256 << 20 // 256 MiB
|
||||
type DatasetRepository interface {
|
||||
Create(ctx context.Context, d domain.Dataset) (domain.Dataset, error)
|
||||
GetByID(ctx context.Context, id uuid.UUID) (domain.Dataset, error)
|
||||
ListSummaries(ctx context.Context, categoryID *uuid.UUID, limit, offset int) ([]domain.DatasetSummary, error)
|
||||
Count(ctx context.Context, categoryID *uuid.UUID) (int, error)
|
||||
ListSummaries(ctx context.Context, filter domain.DatasetFilter, limit, offset int) ([]domain.DatasetSummary, error)
|
||||
Count(ctx context.Context, filter domain.DatasetFilter) (int, error)
|
||||
Delete(ctx context.Context, id uuid.UUID) error
|
||||
MarkParsed(ctx context.Context, id uuid.UUID, cols []domain.AttributeColumn) error
|
||||
MarkParseFailed(ctx context.Context, id uuid.UUID, reason string) error
|
||||
@@ -262,7 +262,7 @@ func (s *DatasetService) Reprocess(ctx context.Context, id uuid.UUID) (domain.Da
|
||||
func (s *DatasetService) ReprocessAll(ctx context.Context) (enqueued int, failures map[uuid.UUID]error, err error) {
|
||||
failures = make(map[uuid.UUID]error)
|
||||
for offset := 0; ; {
|
||||
summaries, err := s.repo.ListSummaries(ctx, nil, MaxPageSize, offset)
|
||||
summaries, err := s.repo.ListSummaries(ctx, domain.DatasetFilter{}, MaxPageSize, offset)
|
||||
if err != nil {
|
||||
return enqueued, failures, err
|
||||
}
|
||||
@@ -886,11 +886,12 @@ func (s *DatasetService) WaitForStatus(ctx context.Context, id uuid.UUID, curren
|
||||
}
|
||||
}
|
||||
|
||||
// ListSummaries returns a page of dataset summaries, optionally filtered to a
|
||||
// category by id and/or by code. page is 1-based; page and pageSize are clamped
|
||||
// to sane bounds. When categoryCode is set it is resolved to its category id; an
|
||||
// unknown code yields an empty page.
|
||||
func (s *DatasetService) ListSummaries(ctx context.Context, categoryID *uuid.UUID, categoryCode *string, page, pageSize int) (DatasetPage, error) {
|
||||
// ListSummaries returns a page of dataset summaries matching filter, always
|
||||
// ordered by created_at descending. page is 1-based; page and pageSize are
|
||||
// clamped to sane bounds. When categoryCode is set it is resolved to its
|
||||
// category id (overriding filter.CategoryID); an unknown code yields an empty
|
||||
// page.
|
||||
func (s *DatasetService) ListSummaries(ctx context.Context, filter domain.DatasetFilter, categoryCode *string, page, pageSize int) (DatasetPage, error) {
|
||||
if page < 1 {
|
||||
page = 1
|
||||
}
|
||||
@@ -909,14 +910,14 @@ func (s *DatasetService) ListSummaries(ctx context.Context, categoryID *uuid.UUI
|
||||
}
|
||||
return DatasetPage{}, err
|
||||
}
|
||||
categoryID = &category.ID
|
||||
filter.CategoryID = &category.ID
|
||||
}
|
||||
|
||||
items, err := s.repo.ListSummaries(ctx, categoryID, pageSize, (page-1)*pageSize)
|
||||
items, err := s.repo.ListSummaries(ctx, filter, pageSize, (page-1)*pageSize)
|
||||
if err != nil {
|
||||
return DatasetPage{}, err
|
||||
}
|
||||
total, err := s.repo.Count(ctx, categoryID)
|
||||
total, err := s.repo.Count(ctx, filter)
|
||||
if err != nil {
|
||||
return DatasetPage{}, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user