미사용 파일정리
This commit is contained in:
@@ -12,69 +12,30 @@
|
||||
* ============================================================
|
||||
*/
|
||||
|
||||
/**
|
||||
* 랭킹 기준 타입
|
||||
* - GENOME: 유전체 형질 기반 랭킹 (35개 형질 EBV 가중 평균)
|
||||
*/
|
||||
export enum RankingCriteriaType {
|
||||
GENOME = 'GENOME',
|
||||
}
|
||||
import {
|
||||
IsEnum,
|
||||
IsOptional,
|
||||
IsArray,
|
||||
IsString,
|
||||
IsNumber,
|
||||
Min,
|
||||
Max,
|
||||
ValidateNested,
|
||||
} from 'class-validator';
|
||||
import { Type } from 'class-transformer';
|
||||
import {
|
||||
FilterCondition,
|
||||
SortOption,
|
||||
PaginationOption,
|
||||
FilterEngineOptions,
|
||||
} from '../../shared/filter/interfaces/filter.interface';
|
||||
import { RankingCriteriaType } from '../../common/const/RankingCriteriaType';
|
||||
|
||||
// Re-export for convenience
|
||||
export { RankingCriteriaType };
|
||||
|
||||
// ============================================================
|
||||
// 필터 관련 타입 (FilterEngine에서 사용)
|
||||
// ============================================================
|
||||
|
||||
export type FilterOperator =
|
||||
| 'eq' // 같음
|
||||
| 'ne' // 같지 않음
|
||||
| 'gt' // 초과
|
||||
| 'gte' // 이상
|
||||
| 'lt' // 미만
|
||||
| 'lte' // 이하
|
||||
| 'like' // 포함 (문자열)
|
||||
| 'in' // 배열 내 포함
|
||||
| 'between'; // 범위
|
||||
|
||||
export type SortOrder = 'ASC' | 'DESC';
|
||||
|
||||
/**
|
||||
* 필터 조건
|
||||
* 예: { field: 'cowSex', operator: 'eq', value: 'F' }
|
||||
*/
|
||||
export interface FilterCondition {
|
||||
field: string;
|
||||
operator: FilterOperator;
|
||||
value: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* 정렬 옵션
|
||||
*/
|
||||
export interface SortOption {
|
||||
field: string;
|
||||
order: SortOrder;
|
||||
}
|
||||
|
||||
/**
|
||||
* 페이지네이션 옵션
|
||||
*/
|
||||
export interface PaginationOption {
|
||||
page: number; // 페이지 번호 (1부터 시작)
|
||||
limit: number; // 페이지당 개수
|
||||
}
|
||||
|
||||
/**
|
||||
* 필터 엔진 옵션
|
||||
* - 개체 목록 필터링에 사용
|
||||
*/
|
||||
export interface FilterEngineOptions {
|
||||
filters?: FilterCondition[];
|
||||
sorts?: SortOption[];
|
||||
pagination?: PaginationOption;
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// 랭킹 조건 타입
|
||||
// 랭킹 조건 DTO
|
||||
// ============================================================
|
||||
|
||||
/**
|
||||
@@ -84,21 +45,62 @@ export interface FilterEngineOptions {
|
||||
*
|
||||
* 예: { traitNm: '도체중', weight: 8 }
|
||||
*/
|
||||
export interface TraitRankingCondition {
|
||||
traitNm: string; // 형질명 (예: '도체중', '근내지방도')
|
||||
weight?: number; // 가중치 1~10 (기본값: 1)
|
||||
export class TraitRankingConditionDto {
|
||||
@IsString()
|
||||
traitNm: string; // 형질명 (예: '도체중', '근내지방도')
|
||||
|
||||
@IsOptional()
|
||||
@IsNumber()
|
||||
@Min(1)
|
||||
@Max(10)
|
||||
weight?: number; // 가중치 1~10 (기본값: 1)
|
||||
}
|
||||
|
||||
/**
|
||||
* 랭킹 옵션
|
||||
* 랭킹 옵션 DTO
|
||||
*/
|
||||
export interface RankingOptions {
|
||||
criteriaType: RankingCriteriaType; // 랭킹 기준 타입
|
||||
traitConditions?: TraitRankingCondition[]; // GENOME용: 형질별 가중치
|
||||
export class RankingOptionsDto {
|
||||
@IsEnum(RankingCriteriaType)
|
||||
criteriaType: RankingCriteriaType; // 랭킹 기준 타입
|
||||
|
||||
@IsOptional()
|
||||
@IsArray()
|
||||
@ValidateNested({ each: true })
|
||||
@Type(() => TraitRankingConditionDto)
|
||||
traitConditions?: TraitRankingConditionDto[]; // GENOME용: 형질별 가중치
|
||||
|
||||
@IsOptional()
|
||||
@IsNumber()
|
||||
@Min(1)
|
||||
limit?: number;
|
||||
|
||||
@IsOptional()
|
||||
@IsNumber()
|
||||
@Min(0)
|
||||
offset?: number;
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// 필터 옵션 DTO (FilterEngine용)
|
||||
// ============================================================
|
||||
|
||||
/**
|
||||
* 필터 엔진 옵션 DTO
|
||||
* - 개체 목록 필터링에 사용
|
||||
*/
|
||||
export class FilterEngineOptionsDto implements FilterEngineOptions {
|
||||
@IsOptional()
|
||||
@IsArray()
|
||||
filters?: FilterCondition[];
|
||||
|
||||
@IsOptional()
|
||||
@IsArray()
|
||||
sorts?: SortOption[];
|
||||
|
||||
@IsOptional()
|
||||
pagination?: PaginationOption;
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// 메인 요청 DTO
|
||||
// ============================================================
|
||||
@@ -123,7 +125,13 @@ export interface RankingOptions {
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
export interface RankingRequestDto {
|
||||
filterOptions?: FilterEngineOptions; // 필터/정렬/페이지네이션
|
||||
rankingOptions: RankingOptions; // 랭킹 조건
|
||||
export class RankingRequestDto {
|
||||
@IsOptional()
|
||||
@ValidateNested()
|
||||
@Type(() => FilterEngineOptionsDto)
|
||||
filterOptions?: FilterEngineOptionsDto; // 필터/정렬/페이지네이션
|
||||
|
||||
@ValidateNested()
|
||||
@Type(() => RankingOptionsDto)
|
||||
rankingOptions: RankingOptionsDto; // 랭킹 조건
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user