mock-table-data
Version:
`mock-table-data`는 JavaScript/TypeScript 환경에서 테이블 형태의 데이터를 조건, 정렬, 페이징 기반으로 필터링하거나 가공할 수 있는 유틸리티 클래스입니다. 테스트용 또는 실제 클라이언트 필터링 용도로 사용할 수 있습니다.
44 lines (43 loc) • 1.96 kB
TypeScript
export type LogicOperator = 'AND' | 'OR';
export type ConditionItem = {
[key: string]: any;
type?: 'string' | 'number' | 'boolean';
required?: boolean;
like?: boolean;
};
export type ConditionNode = {
logic?: LogicOperator;
conditions: ConditionNode[];
} | ConditionItem;
export type TableDataOptions = {
primaryKey?: string;
dataProcessing?: (dataSource: Record<string, any>[]) => Record<string, any>[];
};
export interface TableMetaData {
result: Record<string, any>[];
meta: {
totalCount: number;
currentCount: number;
limit: number;
offset: number;
};
}
export default class TableData {
private readonly _dataSource;
private readonly _primaryKey?;
private readonly dataProcessing?;
constructor(dataSource: Record<string, any>[], tableOptions?: TableDataOptions);
static getSortOption(sort: any): any[] | undefined;
private static validateConditionItem;
private evaluateCondition;
get dataSource(): Record<string, any>[];
sortedList(rows: Record<string, any>[], sorts: string[]): Record<string, any>[];
filteredList(conditions: ConditionNode | ConditionItem[]): Record<string, any>[];
getRows(limit: any, offset: any, conditions?: ConditionNode | ConditionItem[], sorts?: string[], meta?: boolean): Record<string, any>[] | TableMetaData;
selectRow(conditions: ConditionNode | ConditionItem[]): Record<string, any> | undefined;
insertRow(item: Record<string, any>): Record<string, any>;
updateRow(conditions: ConditionNode | ConditionItem[], newItem?: Record<string, any>): boolean;
deleteRow(conditions: ConditionNode | ConditionItem[]): boolean;
selectRows(limit?: any, offset?: any, conditions?: ConditionNode | ConditionItem[], sort?: any, meta?: false): Record<string, any>[];
selectRows(limit?: any, offset?: any, conditions?: ConditionNode | ConditionItem[], sort?: any, meta?: true): TableMetaData;
}