Feat: admin collections filtering (#977)

* collections filtering

* filtering collection tests

* oas for list collections
This commit is contained in:
Philip Korsholm
2022-02-01 17:24:47 +01:00
committed by GitHub
parent fdc493df7f
commit f4f9653efc
3 changed files with 147 additions and 5 deletions
@@ -1,10 +1,12 @@
import { Type } from "class-transformer"
import { IsNumber, IsOptional } from "class-validator"
import { IsNumber, IsOptional, IsString, ValidateNested } from "class-validator"
import _, { identity } from "lodash"
import {
defaultAdminCollectionsFields,
defaultAdminCollectionsRelations,
} from "."
import ProductCollectionService from "../../../../services/product-collection"
import { DateComparisonOperator } from "../../../../types/common"
import { validator } from "../../../../utils/validator"
/**
* @oas [get] /collections
@@ -13,8 +15,13 @@ import { validator } from "../../../../utils/validator"
* description: "Retrieve a list of Product Collection."
* x-authenticated: true
* parameters:
* - (path) limit {string} The number of collections to return.
* - (path) offset {string} The offset of collections to return.
* - (query) limit {string} The number of collections to return.
* - (query) offset {string} The offset of collections to return.
* - (query) title {string} The title of collections to return.
* - (query) handle {string} The handle of collections to return.
* - (query) deleted_at {DateComparisonOperator} Date comparison for when resulting collections was deleted, i.e. less than, greater than etc.
* - (query) created_at {DateComparisonOperator} Date comparison for when resulting collections was created, i.e. less than, greater than etc.
* - (query) updated_at {DateComparisonOperator} Date comparison for when resulting collections was updated, i.e. less than, greater than etc.
* tags:
* - Collection
* responses:
@@ -41,8 +48,10 @@ export default async (req, res) => {
take: validated.limit,
}
const filterableFields = _.omit(validated, ["limit", "offset"])
const [collections, count] = await productCollectionService.listAndCount(
{},
_.pickBy(filterableFields, identity),
listConfig
)
@@ -54,7 +63,7 @@ export default async (req, res) => {
})
}
export class AdminGetCollectionsParams {
export class AdminGetCollectionsPaginationParams {
@IsNumber()
@IsOptional()
@Type(() => Number)
@@ -65,3 +74,28 @@ export class AdminGetCollectionsParams {
@Type(() => Number)
offset = 0
}
export class AdminGetCollectionsParams extends AdminGetCollectionsPaginationParams {
@IsOptional()
@IsString()
title?: string
@IsOptional()
@IsString()
handle?: string
@IsOptional()
@ValidateNested()
@Type(() => DateComparisonOperator)
created_at?: DateComparisonOperator
@IsOptional()
@ValidateNested()
@Type(() => DateComparisonOperator)
updated_at?: DateComparisonOperator
@ValidateNested()
@IsOptional()
@Type(() => DateComparisonOperator)
deleted_at?: DateComparisonOperator
}