File

src/core/domain/dtos/elastic/es-query.dto.ts

Description

Elasticsearch query DTO

Index

Properties

Constructor

constructor()

Constructs an empty object

Properties

Optional pit
Type : EsPit
Decorators :
@IsOptional()
@IsObject()
@ApiPropertyOptional({description: 'PIT object', example: undefined})

Object, that stores PIT ID and time alive

query
Type : EsQuery
Decorators :
@IsDefined()
@IsObject()
@ApiProperty({description: 'Search query object passed to Elasticsearch', example: undefined})

The search query object passed to Elasticsearch

Optional search_after
Type : []
Decorators :
@IsOptional()
@IsArray()
@ApiPropertyOptional({description: '', example: undefined})

Pagination info

Optional size
Type : number
Decorators :
@IsOptional()
@IsDefined()
@IsNumber()
@IsInt()
@ApiPropertyOptional({description: 'Maximum number of elements returned by Elasticsearch', example: 30})

Maximum number of elements returned by Elasticsearch

Optional sort
Type : []
Decorators :
@IsOptional()
@IsArray()
@ApiPropertyOptional({description: '', example: undefined})

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;
     }
 }

results matching ""

    No results matching ""