src/repo/dtos/repo-search-options.dto.ts
Properties |
|
Readonly Optional filter |
Type : InsightFilterFieldsEnum
|
Decorators :
@ApiPropertyOptional({enum: InsightFilterFieldsEnum, enumName: 'InsightFilterFieldsEnum'})
|
Defined in src/repo/dtos/repo-search-options.dto.ts:16
|
Readonly Optional repo |
Type : string
|
Decorators :
@ApiPropertyOptional()
|
Defined in src/repo/dtos/repo-search-options.dto.ts:21
|
Readonly Optional repoIds |
Type : string
|
Decorators :
@ApiPropertyOptional()
|
Defined in src/repo/dtos/repo-search-options.dto.ts:34
|
Readonly Optional topic |
Type : string
|
Decorators :
@ApiPropertyOptional({type: 'string', default: ''})
|
Defined in src/repo/dtos/repo-search-options.dto.ts:29
|
Readonly Optional orderBy |
Type : RepoOrderFieldsEnum
|
Default value : RepoOrderFieldsEnum.stars
|
Decorators :
@ApiPropertyOptional({enum: RepoOrderFieldsEnum, enumName: 'RepoOrderFieldsEnum', default: undefined})
|
Inherited from
RepoPageOptionsDto
|
Defined in
RepoPageOptionsDto:39
|
Readonly Optional limit |
Type : number
|
Default value : 50
|
Decorators :
@ApiPropertyOptional({minimum: 1, maximum: 1000, default: 10, type: 'integer'})
|
Inherited from
PageOptionsDto
|
Defined in
PageOptionsDto:30
|
Readonly Optional orderDirection |
Type : OrderDirectionEnum
|
Default value : OrderDirectionEnum.DESC
|
Decorators :
@ApiPropertyOptional({enum: OrderDirectionEnum, enumName: 'OrderDirectionEnum', default: undefined})
|
Inherited from
PageOptionsDto
|
Defined in
PageOptionsDto:35
|
Readonly Optional page |
Type : number
|
Default value : 1
|
Decorators :
@ApiPropertyOptional({minimum: 1, default: 1, type: 'integer'})
|
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'})
|
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'})
|
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);
}
}