@g1cloud/entity-modeler-next 5.0.0-beta.26 → 5.0.0-beta.27
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/adapter/propagationBackfill.d.ts +32 -0
- package/dist/core/associationNav.d.ts +14 -0
- package/dist/entity-modeler.js +2741 -2687
- package/dist/entity-modeler.umd.cjs +18 -18
- package/dist/index.d.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ModelId } from '../core/types';
|
|
2
|
+
import { OpShape } from '../command/op';
|
|
3
|
+
import { PDiagram, PDiagramV2 } from './persisted';
|
|
4
|
+
export interface PropagationBackfillPlan {
|
|
5
|
+
/** backfill op 배치 (비면 정렬 대상 없음 — 문서 skip). */
|
|
6
|
+
ops: OpShape[];
|
|
7
|
+
/** raw doc의 컨테이너 rev 스냅샷 — `buildAgentBatch(diagramId, revs, ops)` CAS base. */
|
|
8
|
+
revs: Record<ModelId, number>;
|
|
9
|
+
/** dry-run 리포트용 집계. */
|
|
10
|
+
summary: {
|
|
11
|
+
/** 방출한 `attribute.update {notNull}` 수. */
|
|
12
|
+
notNullPatches: number;
|
|
13
|
+
/** 승격(nullable→NOT NULL) / 강등(NOT NULL→nullable) 분해 — 방향 편중 확인용. */
|
|
14
|
+
promoted: number;
|
|
15
|
+
demoted: number;
|
|
16
|
+
/** 범위 밖이라 버린 계획 항목 수(무신호 절단 금지). */
|
|
17
|
+
skipped: {
|
|
18
|
+
adds: number;
|
|
19
|
+
removes: number;
|
|
20
|
+
otherPatches: number;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* v2 doc 하나에 대한 전파 backfill 계획을 산출한다.
|
|
26
|
+
*
|
|
27
|
+
* v1 doc은 빈 계획을 반환한다 — 스윕 라우트가 v2 컬렉션 대상이고, v1은 마이그레이션을 거쳐 v2가
|
|
28
|
+
* 된 뒤 대상이 된다. ⚠️ 단 v1→v2 마이그레이션(hydration)은 저장된 `notNull`을 그대로 옮기므로
|
|
29
|
+
* (`diagramAdapter` `assocFromHydrated`) **이후 새로 마이그레이션되는 문서는 다시 스윕이 필요하다**
|
|
30
|
+
* — AA-2 heal 스윕과 달리 이 축은 hydration이 치유하지 않는다.
|
|
31
|
+
*/
|
|
32
|
+
export declare function planPropagationBackfillOps(doc: PDiagram | PDiagramV2): PropagationBackfillPlan;
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
import { Multiplicity } from './types';
|
|
2
2
|
/** end2 multiplicity가 컬렉션(0..* / 1..*)인가 — 코드젠의 @OneToMany vs @OneToOne 분기와 동일 기준. */
|
|
3
3
|
export declare function isCollectionMultiplicity(m: Multiplicity): boolean;
|
|
4
|
+
/**
|
|
5
|
+
* 최소 개수가 0인가(0..1 / 0..*) — 레거시 `Multiplicity.isOptional()` 이식.
|
|
6
|
+
*
|
|
7
|
+
* FK nullability의 파생원이다: 부모 end(end1)가 optional이 아니면(=`1`) 자식은 부모 없이 존재할 수
|
|
8
|
+
* 없으므로 FK는 NOT NULL이다. 레거시 코드젠이 `@ManyToOne(optional=…)`·`@JoinColumn(nullable=…)`을
|
|
9
|
+
* 정확히 이 값으로 방출했다(bluework-im `EntityJavaFile:900,932,1072,1120`).
|
|
10
|
+
*
|
|
11
|
+
* 자식 end(end2)의 `0..*` vs `1..*`는 이 축이 아니다 — "부모가 자식을 최소 1개 가진다"는 자식 테이블의
|
|
12
|
+
* 컬럼 제약으로 표현할 수 없다(레거시도 여기서 nullability를 뽑지 않는다).
|
|
13
|
+
*
|
|
14
|
+
* 판정을 "required 목록의 여집합"으로 쓴다(`!== '1' && !== '1..*'`) — union 밖 값(레거시는 다중성
|
|
15
|
+
* 미설정을 null로 허용)이 흘러들어도 optional=nullable로 안전하게 떨어진다.
|
|
16
|
+
*/
|
|
17
|
+
export declare function isOptionalMultiplicity(m: Multiplicity): boolean;
|
|
4
18
|
/**
|
|
5
19
|
* 다중성 표시 기호(0..1 / 1 / 0..* / 1..*) — 영속용 enum(`*_INSTANCE(S)`)의 단일 표시 SoT.
|
|
6
20
|
* 기호는 언어 무관 UML 표기라 i18n 대상이 아니다. 캔버스 관계선 라벨·인스펙터 select·mermaid
|