src/core/domain/dtos/elastic/es-query.dto.ts
Elasticsearch query DTO
Properties |
|
constructor()
|
Constructs an empty object |
Optional pit |
Type : EsPit
|
Decorators :
@IsOptional()
|
Object, that stores PIT ID and time alive |
query |
Type : EsQuery
|
Decorators :
@IsDefined()
|
The search query object passed to Elasticsearch |
Optional search_after |
Type : []
|
Decorators :
@IsOptional()
|
Pagination info |
Optional size |
Type : number
|
Decorators :
@IsOptional()
|
Maximum number of elements returned by Elasticsearch |
Optional sort |
Type : []
|
Decorators :
@IsOptional()
|
Sorting info |
import { ApiExtraModels, ApiProperty, ApiPropertyOptional } from "@nestjs/swagger";
import { IsArray, IsDefined, IsInt, IsNotEmpty, IsNumber, IsObject, IsOptional } from "class-validator";
import { EsPit } from "../../interfaces/elastic/es-pit.interface";
import { EsQuery } from "../../interfaces/elastic/es-query.interface"
/**
* List of allowed properties in this DTO
*/
const allowedProperties = ['size', 'query', 'pit', 'sort'];
/**
* Elasticsearch query DTO
*/
@ApiExtraModels()
export class EsQueryDto {
/**
* Maximum number of elements returned by Elasticsearch
*/
@IsOptional()
@IsDefined()
@IsNumber()
@IsInt()
@ApiPropertyOptional({
description: 'Maximum number of elements returned by Elasticsearch',
example: 30
})
size?: number;
/**
* The search query object passed to Elasticsearch
*/
@IsDefined()
@IsObject()
@ApiProperty({
description: 'Search query object passed to Elasticsearch',
example: {},
})
query: EsQuery;
/**
* Object, that stores PIT ID and time alive
*/
@IsOptional()
@IsObject()
@ApiPropertyOptional({
description: 'PIT object',
example: {}
})
pit?: EsPit;
/**
* Sorting info
*/
@IsOptional()
@IsArray()
@ApiPropertyOptional({
description: '',
example: []
})
sort?: unknown[];
/**
* Pagination info
*/
@IsOptional()
@IsArray()
@ApiPropertyOptional({
description: '',
example: []
})
search_after?: unknown[];
/**
* Constructs an empty object
*/
constructor() {
this.size = 10;
this.query = undefined;
this.pit = undefined;
this.sort = undefined;
this.search_after = undefined;
}
}