jskim-node #410
|
|
@ -3564,6 +3564,7 @@ export async function getTableSchema(
|
||||||
logger.info("테이블 스키마 조회", { tableName, companyCode });
|
logger.info("테이블 스키마 조회", { tableName, companyCode });
|
||||||
|
|
||||||
// information_schema와 table_type_columns를 JOIN하여 컬럼 정보와 라벨 정보 함께 가져오기
|
// information_schema와 table_type_columns를 JOIN하여 컬럼 정보와 라벨 정보 함께 가져오기
|
||||||
|
// 회사별 라벨 우선, 없으면 공통(*) 라벨 사용
|
||||||
const schemaQuery = `
|
const schemaQuery = `
|
||||||
SELECT
|
SELECT
|
||||||
ic.column_name,
|
ic.column_name,
|
||||||
|
|
@ -3573,19 +3574,23 @@ export async function getTableSchema(
|
||||||
ic.character_maximum_length,
|
ic.character_maximum_length,
|
||||||
ic.numeric_precision,
|
ic.numeric_precision,
|
||||||
ic.numeric_scale,
|
ic.numeric_scale,
|
||||||
ttc.column_label,
|
COALESCE(ttc_company.column_label, ttc_common.column_label) AS column_label,
|
||||||
ttc.display_order
|
COALESCE(ttc_company.display_order, ttc_common.display_order) AS display_order
|
||||||
FROM information_schema.columns ic
|
FROM information_schema.columns ic
|
||||||
LEFT JOIN table_type_columns ttc
|
LEFT JOIN table_type_columns ttc_common
|
||||||
ON ttc.table_name = ic.table_name
|
ON ttc_common.table_name = ic.table_name
|
||||||
AND ttc.column_name = ic.column_name
|
AND ttc_common.column_name = ic.column_name
|
||||||
AND ttc.company_code = '*'
|
AND ttc_common.company_code = '*'
|
||||||
|
LEFT JOIN table_type_columns ttc_company
|
||||||
|
ON ttc_company.table_name = ic.table_name
|
||||||
|
AND ttc_company.column_name = ic.column_name
|
||||||
|
AND ttc_company.company_code = $2
|
||||||
WHERE ic.table_schema = 'public'
|
WHERE ic.table_schema = 'public'
|
||||||
AND ic.table_name = $1
|
AND ic.table_name = $1
|
||||||
ORDER BY COALESCE(ttc.display_order, ic.ordinal_position), ic.ordinal_position
|
ORDER BY COALESCE(ttc_company.display_order, ttc_common.display_order, ic.ordinal_position), ic.ordinal_position
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const columns = await query<any>(schemaQuery, [tableName]);
|
const columns = await query<any>(schemaQuery, [tableName, companyCode]);
|
||||||
|
|
||||||
if (columns.length === 0) {
|
if (columns.length === 0) {
|
||||||
res.status(404).json({
|
res.status(404).json({
|
||||||
|
|
|
||||||
|
|
@ -295,11 +295,6 @@ const TabsDesignEditor: React.FC<{
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{tab.label || "탭"}
|
{tab.label || "탭"}
|
||||||
{tab.components && tab.components.length > 0 && (
|
|
||||||
<span className="ml-1 text-xs text-muted-foreground">
|
|
||||||
({tab.components.length})
|
|
||||||
</span>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
))
|
))
|
||||||
) : (
|
) : (
|
||||||
|
|
@ -649,11 +644,6 @@ ComponentRegistry.registerComponent({
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{tab.label || "탭"}
|
{tab.label || "탭"}
|
||||||
{tab.components && tab.components.length > 0 && (
|
|
||||||
<span className="ml-1 text-xs text-muted-foreground">
|
|
||||||
({tab.components.length})
|
|
||||||
</span>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
))
|
))
|
||||||
) : (
|
) : (
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue