File

src/repo/dtos/repo-search-options.dto.ts

Extends

RepoPageOptionsDto

Index

Properties

Properties

Readonly Optional filter
Type : InsightFilterFieldsEnum
Decorators :
@ApiPropertyOptional({enum: InsightFilterFieldsEnum, enumName: 'InsightFilterFieldsEnum'})
@IsEnum(InsightFilterFieldsEnum)
@IsOptional()
Readonly Optional repo
Type : string
Decorators :
@ApiPropertyOptional()
@IsString()
@IsOptional()
Readonly Optional repoIds
Type : string
Decorators :
@ApiPropertyOptional()
@IsString()
@IsOptional()
Readonly Optional topic
Type : string
Decorators :
@ApiPropertyOptional({type: 'string', default: ''})
@IsString()
@IsOptional()
Readonly Optional orderBy
Type : RepoOrderFieldsEnum
Default value : RepoOrderFieldsEnum.stars
Decorators :
@ApiPropertyOptional({enum: RepoOrderFieldsEnum, enumName: 'RepoOrderFieldsEnum', default: undefined})
@IsEnum(RepoOrderFieldsEnum)
@IsOptional()
Inherited from RepoPageOptionsDto
Readonly Optional limit
Type : number
Default value : 50
Decorators :
@ApiPropertyOptional({minimum: 1, maximum: 1000, default: 10, type: 'integer'})
@Type(undefined)
@IsInt()
@Min(1)
@Max(10000)
@IsOptional()
Inherited from PageOptionsDto
Defined in PageOptionsDto:30
Readonly Optional orderDirection
Type : OrderDirectionEnum
Default value : OrderDirectionEnum.DESC
Decorators :
@ApiPropertyOptional({enum: OrderDirectionEnum, enumName: 'OrderDirectionEnum', default: undefined})
@IsEnum(OrderDirectionEnum)
@IsOptional()
Inherited from PageOptionsDto
Defined in PageOptionsDto:35
Readonly Optional page
Type : number
Default value : 1
Decorators :
@ApiPropertyOptional({minimum: 1, default: 1, type: 'integer'})
@Type(undefined)
@IsInt()
@Min(1)
@IsOptional()
Inherited from PageOptionsDto
Defined in PageOptionsDto:17
Readonly Optional prev_days_start_date
Type : number
Default value : 0
Decorators :
@ApiPropertyOptional({description: 'Number of days in the past to start range block', default: 0, type: 'integer'})
@Type(undefined)
@IsIn(['0', '7', '30', '90', '180'])
@IsInt()
@IsOptional()
Inherited from PageOptionsDto
Defined in PageOptionsDto:57
Readonly Optional range
Type : number
Default value : 30
Decorators :
@ApiPropertyOptional({description: 'Range in days', default: 30, type: 'integer'})
@Type(undefined)
@IsIn(['7', '30', '90', '180', '360'])
@IsInt()
@IsOptional()
Inherited from PageOptionsDto
Defined in PageOptionsDto:46
import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger";
import { IsBooleanString, IsEnum, IsIn, IsInt, IsOptional, IsString, Max, Min } from "class-validator";
import { Type } from "class-transformer";
import { InsightFilterFieldsEnum } from "../../insight/dtos/insight-options.dto";

import { OrderDirectionEnum } from "../../common/constants/order-direction.constant";
import { RepoOrderFieldsEnum, RepoPageOptionsDto } from "./repo-page-options.dto";

export class RepoSearchOptionsDto extends RepoPageOptionsDto {
  @ApiPropertyOptional({
    enum: InsightFilterFieldsEnum,
    enumName: "InsightFilterFieldsEnum",
  })
  @IsEnum(InsightFilterFieldsEnum)
  @IsOptional()
  readonly filter?: InsightFilterFieldsEnum;

  @ApiPropertyOptional()
  @IsString()
  @IsOptional()
  readonly repo?: string;

  @ApiPropertyOptional({
    type: "string",
    default: "",
  })
  @IsString()
  @IsOptional()
  readonly topic?: string;

  @ApiPropertyOptional()
  @IsString()
  @IsOptional()
  readonly repoIds?: string;
}

export class RepoRangeOnlyOptionDto {
  @ApiPropertyOptional({
    description: "Range in days",
    default: 30,
    type: "integer",
  })
  @Type(() => Number)
  @IsIn([7, 30, 90, 180, 360])
  @IsInt()
  @IsOptional()
  readonly range?: number = 30;
}

export class YoloWithRangeDto extends RepoRangeOnlyOptionDto {
  @ApiPropertyOptional({
    description: "Whether to include bot yolo commits or not",
    default: "false",
  })
  @IsBooleanString()
  @IsOptional()
  readonly include_bots?: string = "false";
}

export class RepoRangeOptionsDto {
  @ApiProperty()
  @IsString()
  readonly repos: string;

  @ApiPropertyOptional({
    description: "Range in days",
    default: 30,
    type: "integer",
  })
  @Type(() => Number)
  @IsIn([7, 30, 90, 180, 360])
  @IsInt()
  @IsOptional()
  readonly range?: number = 30;

  @ApiPropertyOptional({
    description: "Number of days in the past to start range block",
    default: 0,
    type: "integer",
  })
  @Type(() => Number)
  @IsIn([0, 7, 30, 90])
  @IsInt()
  @IsOptional()
  readonly prev_days_start_date?: number = 0;
}

export class RepoFuzzySearchOptionsDto {
  @ApiProperty()
  @IsString()
  readonly fuzzy_repo_name: string;

  @ApiPropertyOptional({
    type: "string",
    default: "",
  })
  @IsString()
  @IsOptional()
  readonly topic?: string;

  @ApiPropertyOptional({
    enum: RepoOrderFieldsEnum,
    enumName: "RepoOrderFieldsEnum",
    default: RepoOrderFieldsEnum.stars,
  })
  @IsEnum(RepoOrderFieldsEnum)
  @IsOptional()
  readonly orderBy?: RepoOrderFieldsEnum = RepoOrderFieldsEnum.stars;

  @ApiPropertyOptional({
    minimum: 1,
    default: 1,
    type: "integer",
  })
  @Type(() => Number)
  @IsInt()
  @Min(1)
  @IsOptional()
  readonly page?: number = 1;

  @ApiPropertyOptional({
    minimum: 1,
    maximum: 1000,
    default: 10,
    type: "integer",
  })
  @Type(() => Number)
  @IsInt()
  @Min(1)
  @Max(10000)
  @IsOptional()
  readonly limit?: number = 50;

  @ApiPropertyOptional({ enum: OrderDirectionEnum, enumName: "OrderDirectionEnum", default: OrderDirectionEnum.DESC })
  @IsEnum(OrderDirectionEnum)
  @IsOptional()
  readonly orderDirection?: OrderDirectionEnum = OrderDirectionEnum.DESC;

  get skip(): number {
    return ((this.page ?? 1) - 1) * (this.limit ?? 50);
  }
}

results matching ""

    No results matching ""