Skip to content

Commit

Permalink
feat(datamodel): add common api query parameters
Browse files Browse the repository at this point in the history
begin to define common parameters for filtering,sorting, etc on endpoints
  • Loading branch information
bilalshaikh42 committed Aug 18, 2021
1 parent e4e1986 commit c8bace5
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 0 deletions.
1 change: 1 addition & 0 deletions libs/datamodel/api/src/lib/json/index.ts
@@ -1,2 +1,3 @@
export * from './error';
export * from './meta';
export * from './queryParameters';
64 changes: 64 additions & 0 deletions libs/datamodel/api/src/lib/json/queryParameters.ts
@@ -0,0 +1,64 @@
import { ApiProperty, ApiQuery } from "@nestjs/swagger";
import { IsArray, IsInt, IsOptional, IsString } from 'class-validator';
import { Transform, Type,} from 'class-transformer';
import { applyDecorators } from "@nestjs/common";



export class FieldsQueryParameters {
@IsString({ each: true })
@IsArray()
@IsOptional()
@ApiProperty({ type: [String] })
@Transform((params) => {
return params.value.split(',');
})
fields!: string[];
}

export const ApiFieldsQuery = (...args: string[]) => applyDecorators(
ApiQuery({ name: 'fields', explode: false, style: 'form', type:String, isArray: true })
)

// WIP can use this to define the query parameters for operations like sorting, filtering, paging, etc.
class FullJsonAPIQueryParameters {
@IsString({ each: true })
@IsArray()
@IsOptional()
@ApiProperty({ type: [String] })
@Transform((params) => {
return params.value.split(',');
})
fields!: string[];

@IsString({ each: true })
@IsArray()
@IsOptional()
@ApiProperty({ type: [String] })
@Transform((params) => {
return params.value.split(',');
})
sort!: string[];

@IsInt()
@IsArray()
@IsOptional()
@ApiProperty({ type: Number, format: 'int' })
@Type(() => Number)
page!: number;

@IsString({ each: true })
@IsArray()
@IsOptional()
@ApiProperty({ type: [String] })
@Transform((params) => {
return params.value.split(',');
})
include!: string[];


@IsOptional()
//@ApiProperty({ type: [String] })
// Maybe make this object
filter!: string[];
}

0 comments on commit c8bace5

Please sign in to comment.