Feat: admin collections filtering (#977)
* collections filtering * filtering collection tests * oas for list collections
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user