조인테이블의 컬럼 사용할 수 있도록 수정
This commit is contained in:
@@ -1412,6 +1412,11 @@ export class TableManagementService {
|
||||
sortBy?: string;
|
||||
sortOrder?: string;
|
||||
enableEntityJoin?: boolean;
|
||||
additionalJoinColumns?: Array<{
|
||||
sourceTable: string;
|
||||
sourceColumn: string;
|
||||
joinAlias: string;
|
||||
}>;
|
||||
}
|
||||
): Promise<EntityJoinResponse> {
|
||||
const startTime = Date.now();
|
||||
@@ -1432,7 +1437,41 @@ export class TableManagementService {
|
||||
}
|
||||
|
||||
// Entity 조인 설정 감지
|
||||
const joinConfigs = await entityJoinService.detectEntityJoins(tableName);
|
||||
let joinConfigs = await entityJoinService.detectEntityJoins(tableName);
|
||||
|
||||
// 추가 조인 컬럼 정보가 있으면 조인 설정에 추가
|
||||
if (
|
||||
options.additionalJoinColumns &&
|
||||
options.additionalJoinColumns.length > 0
|
||||
) {
|
||||
logger.info(
|
||||
`추가 조인 컬럼 처리: ${options.additionalJoinColumns.length}개`
|
||||
);
|
||||
|
||||
for (const additionalColumn of options.additionalJoinColumns) {
|
||||
// 기존 조인 설정에서 같은 참조 테이블을 사용하는 설정 찾기
|
||||
const baseJoinConfig = joinConfigs.find(
|
||||
(config) => config.referenceTable === additionalColumn.sourceTable
|
||||
);
|
||||
|
||||
if (baseJoinConfig) {
|
||||
// 추가 조인 컬럼 설정 생성
|
||||
const additionalJoinConfig: EntityJoinConfig = {
|
||||
sourceTable: tableName,
|
||||
sourceColumn: baseJoinConfig.sourceColumn, // 원본 컬럼 (writer)
|
||||
referenceTable: additionalColumn.sourceTable, // 참조 테이블 (user_info)
|
||||
referenceColumn: baseJoinConfig.referenceColumn, // 참조 키 (user_id)
|
||||
displayColumn: additionalColumn.sourceColumn, // 표시할 컬럼 (email)
|
||||
aliasColumn: additionalColumn.joinAlias, // 별칭 (writer_email)
|
||||
};
|
||||
|
||||
joinConfigs.push(additionalJoinConfig);
|
||||
logger.info(
|
||||
`추가 조인 컬럼 설정 추가: ${additionalJoinConfig.aliasColumn}`
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (joinConfigs.length === 0) {
|
||||
logger.info(`Entity 조인 설정이 없음: ${tableName}`);
|
||||
@@ -1624,7 +1663,11 @@ export class TableManagementService {
|
||||
String(sourceValue)
|
||||
);
|
||||
|
||||
enhancedRow[config.aliasColumn] = lookupValue || sourceValue;
|
||||
// null이나 undefined인 경우 빈 문자열로 설정
|
||||
enhancedRow[config.aliasColumn] = lookupValue || "";
|
||||
} else {
|
||||
// sourceValue가 없는 경우도 빈 문자열로 설정
|
||||
enhancedRow[config.aliasColumn] = "";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1946,11 +1989,18 @@ export class TableManagementService {
|
||||
const keyValue = row[config.sourceColumn];
|
||||
if (keyValue) {
|
||||
const lookupValue = cachedData.get(String(keyValue));
|
||||
if (lookupValue) {
|
||||
row[config.aliasColumn] = lookupValue;
|
||||
}
|
||||
// null이나 undefined인 경우 빈 문자열로 설정
|
||||
row[config.aliasColumn] = lookupValue || "";
|
||||
} else {
|
||||
// sourceValue가 없는 경우도 빈 문자열로 설정
|
||||
row[config.aliasColumn] = "";
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// 캐시가 없는 경우 모든 행에 빈 문자열 설정
|
||||
enhancedData.forEach((row) => {
|
||||
row[config.aliasColumn] = "";
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user