@g1cloud/entity-modeler-next 5.0.0-beta.25 → 5.0.0-beta.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/columnResolve.d.ts +22 -0
- package/dist/core/fkDerived.d.ts +6 -2
- package/dist/core/validation.d.ts +1 -13
- package/dist/entity-modeler.js +6103 -6063
- package/dist/entity-modeler.umd.cjs +30 -28
- package/dist/index.d.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Attribute, DbColumn, EmbeddableCatalog, Entity, LogicalModel } from './types';
|
|
2
|
+
/** 상속 해소 컨텍스트 — `ValidationContext`·`DdlContext`와 동형(카탈로그는 호스트 주입). */
|
|
3
|
+
export interface ColumnResolveContext {
|
|
4
|
+
/** EMBED_PREDEF 서브컬럼의 선언값 해석용. 미주입 시 그 축만 graceful degrade(빈 값). */
|
|
5
|
+
embeddableCatalog?: EmbeddableCatalog;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* 컬럼의 **실효 값** — 자기 값이 비어 있으면 선언원에서 상속. 문자열은 빈값 폴백(`||`), 수치는
|
|
9
|
+
* null/undefined 폴백(`??`)이다(저장 라운드트립이 미설정 수치를 `null`로 바꾸므로 — propagation `nn()` 동형).
|
|
10
|
+
*
|
|
11
|
+
* 축별 폴백(값 단위)이지 슬롯 통째 대체가 아니다: 사용처가 물리명만 override하고 타입은 상속하는 형태
|
|
12
|
+
* (@AttributeOverride의 실제 용법)가 지배적이라, 한 축을 채웠다고 나머지까지 자기 값으로 강제하면
|
|
13
|
+
* 대다수 정상 데이터가 도로 빈 값이 된다. 캔버스 `EntityNode.effectiveAttr`가 쓰던 시맨틱과 동일.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveEffectiveColumn(attr: Attribute, col: DbColumn, index: number, entity: Entity | undefined, model: LogicalModel, ctx?: ColumnResolveContext): DbColumn;
|
|
16
|
+
/**
|
|
17
|
+
* 실효 물리명 — override(비어있지 않은 physicalName)가 있으면 그 값, 없으면 상속 기본값.
|
|
18
|
+
* 컬럼 충돌 판정(CHK-NAME-2)은 raw `''`가 아니라 이 값으로 해야 한다: 한 테이블에 같은 임베더블
|
|
19
|
+
* (예: Money)이 여러 번 쓰이고 서브컬럼을 비워두면 전부 같은 기본명을 상속해 실제 컬럼 충돌이 나고,
|
|
20
|
+
* FK도 물리명 미지정 시 부모 PK 컬럼명을 그대로 쓰므로 자식 자기 컬럼과 충돌할 수 있다.
|
|
21
|
+
*/
|
|
22
|
+
export declare function resolveColumnPhysicalName(attr: Attribute, col: DbColumn, index: number, entity: Entity | undefined, model: LogicalModel, ctx?: ColumnResolveContext): string;
|
package/dist/core/fkDerived.d.ts
CHANGED
|
@@ -2,8 +2,12 @@ import { Association, Attribute, DbColumn, Entity } from './types';
|
|
|
2
2
|
/**
|
|
3
3
|
* FK 유래 컬럼 = 물리 컬럼을 보유한 관계 속성(RELATION* + dbAttrs). 형상(dataType/length/scale/
|
|
4
4
|
* physicalName/notNull 등)은 부모 식별자(PK) + 관계 identifying에서 파생된다.
|
|
5
|
-
* derivedFrom이 아니라 이 불변식을 쓰는 이유: derivedFrom은
|
|
6
|
-
*
|
|
5
|
+
* derivedFrom이 아니라 이 불변식을 쓰는 이유: derivedFrom은 관계·전파가 심는 링크라 그 자체가 결손일 수
|
|
6
|
+
* 있는 반면, "관계 속성이 물리 컬럼을 갖는다"는 형상은 FK의 정의 자체다.
|
|
7
|
+
* (과거 이 자리엔 "derivedFrom은 영속 데이터엔 0건"이라는 근거가 적혀 있었으나 **실측과 어긋난다** —
|
|
8
|
+
* BNKR_SALES 32문서에서 FK 속성 666건 전량이 derivedFrom을 보유한다. v2는 문서에 그대로 저장되고,
|
|
9
|
+
* v1은 어댑터 `assocFromHydrated`(diagramAdapter.ts:350)가 하이드레이션 시 합성한다. 두 판정은 이
|
|
10
|
+
* 데이터에서 100% 일치하므로 동작 차이는 없다.)
|
|
7
11
|
* RELATION_REF(inverse nav, dbAttrs=0)는 물리 컬럼이 없어 제외.
|
|
8
12
|
*/
|
|
9
13
|
export declare function isFkDerivedColumn(attr: Attribute): boolean;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EmbeddableCatalog, LogicalModel, ModelId, SuperClassCatalog } from './types';
|
|
2
2
|
export declare const PHYSICAL_NAME_MAX_LENGTH = 63;
|
|
3
3
|
/**
|
|
4
4
|
* 물리명이 이식성 권장 한도를 초과하면 **초과 길이(문자 수)**, 아니면 null(비차단 — 호출부는 저장을
|
|
@@ -63,18 +63,6 @@ export interface ValidationContext {
|
|
|
63
63
|
*/
|
|
64
64
|
superClassCatalog?: SuperClassCatalog;
|
|
65
65
|
}
|
|
66
|
-
/** 같은 키를 2회 이상 갖는 항목만 중복으로 — 중복 그룹의 모든 멤버를 반환(어느 쪽이든 보고 고치게). */
|
|
67
|
-
/**
|
|
68
|
-
* 임베드 서브컬럼의 **실효 물리명** — 물리명 override(비어있지 않은 physicalName)가 있으면 그 값, 없으면
|
|
69
|
-
* 상속 기본값을 해석한다. EMBED_PREDEF·EMBED_OWN의 빈 슬롯은 "미매핑"이 아니라 카탈로그/임베더블 source의
|
|
70
|
-
* 기본 컬럼명을 상속하므로(JPA @Embedded는 @AttributeOverride 부재 시 임베더블 선언 컬럼명 사용), 컬럼 충돌
|
|
71
|
-
* 판정은 raw '' 가 아닌 이 실효 물리명으로 해야 한다. 특히 한 테이블에 같은 임베더블(예: Money)이 여러 번
|
|
72
|
-
* 쓰이고 서브컬럼을 비워두면 전부 같은 기본명으로 상속돼 실제 컬럼 충돌이 난다.
|
|
73
|
-
* - EMBED_PREDEF: 카탈로그 fields[index].physicalName (ctx 미주입이면 해석 불가 → '' 로 graceful degrade).
|
|
74
|
-
* - EMBED_OWN: 임베더블 엔터티 source 컬럼[index]의 physicalName(선언순 평탄화 = flattenEmbeddableColumns 동형).
|
|
75
|
-
* - NORMAL 등 그 외: raw physicalName 그대로(빈 값은 '' → 충돌 판정 제외).
|
|
76
|
-
*/
|
|
77
|
-
export declare function resolveColumnPhysicalName(attr: Attribute, col: DbColumn, index: number, model: LogicalModel, ctx?: Pick<ValidationContext, 'embeddableCatalog'>): string;
|
|
78
66
|
/**
|
|
79
67
|
* 설계 품질 검증 — 논리 모델(+선택 컨텍스트)을 받아 이슈 목록을 돌려준다.
|
|
80
68
|
* 순수 함수. 호출부가 심각도/차단정책/표시시점을 해석한다(예: 빈 이름 info는 저장 시점에만 표시).
|