@g1cloud/entity-modeler-next 5.0.0-alpha.21 → 5.0.0-alpha.23

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.
@@ -0,0 +1,62 @@
1
+ import { LogicalModel, ModelId, SuperClassCatalog, EmbeddableCatalog } from './types';
2
+ import { JavaTypeDef } from './javaTypes';
3
+ export interface ScaffoldOptions {
4
+ /** 저장값→소스 타입 역해소 카탈로그. 미주입 시 lib 내장 `JAVA_TYPES` 폴백(호스트 javaTypeCatalog 미러). */
5
+ javaTypeCatalog?: readonly JavaTypeDef[];
6
+ /** 임베더블 타입 해소용(EMBED_PREDEF 필드 타입·클래스명). 미주입 시 모델 type 폴백 + fillIn. */
7
+ embeddableCatalog?: EmbeddableCatalog;
8
+ /**
9
+ * `extends <superClass>` + 상속 컬럼 인덱스 해소용. 핸드오프 O3 — `SuperClassDef.packageName`이
10
+ * "코드젠 forward 슬롯"으로 예약돼 있고 이 emitter가 그 첫 소비처다. 미주입 시 상속 컬럼/extends 미방출.
11
+ */
12
+ superClassCatalog?: SuperClassCatalog;
13
+ /**
14
+ * 패키지 조합 설정(레거시 codegen 이식 — 프로젝트/모듈 설정 + 그룹 조합). 모델 엔티티엔 packageName 이
15
+ * 없고(모델링 도구 특성), 코드젠이 `{basePackage}.{그룹 packageName}.{layerSuffix}` 로 조합한다.
16
+ * - `basePackage`: 모듈 base(호스트 `srcGenConfig.bizModuleConfigs[moduleId].basePackage`, 예 `net.g1project.ecp.sales.order`).
17
+ * - `layerSuffix`: DDD 레이어 접미(기본 `command.domain` — 실물 골든 관례). 그룹 packageName 이 base 마지막
18
+ * 세그먼트와 중복돼도 정상(대형 모듈은 base 안에 order/claim 서브패키지 존재). 그룹 미소속/무 packageName 이면
19
+ * 그룹 세그먼트 생략. 미주입 시 placeholder 폴백(reconcile 몫).
20
+ */
21
+ packageConfig?: {
22
+ basePackage: string;
23
+ layerSuffix?: string;
24
+ };
25
+ /**
26
+ * GroupCodeEnum 속성의 enum 클래스가 사는 패키지(레거시 codegen 컨벤션 = const 프로젝트 basePackage +
27
+ * `.code`, 예 `net.g1project.ecp.common.code`). 주입 시 `@Enumerated` 필드에 `{pkg}.{groupCode}` import 를
28
+ * 방출한다. 미주입 시 import 생략 + fillIn(패키지 확인). 호스트가 srcGenConfig.constProjectConfig 에서 도출.
29
+ */
30
+ groupCodeEnumPackage?: string;
31
+ /**
32
+ * Lombok 방출 모드(기본 `true` — 모델러 사용 프로젝트가 사실상 전부 Lombok). true면 **필드 단위**
33
+ * `@Getter`(스칼라·단일 임베드·owner 관계, 대형 엔티티 SalesOrch류 관례) + 클래스 `@NoArgsConstructor
34
+ * (access = AccessLevel.PROTECTED)`를 방출하고 수동 getter·protected 생성자를 생략한다. **컬렉션 관계**
35
+ * getter는 @Getter가 raw 컬렉션을 반환해 애그리거트 보호가 깨지므로 예외 — 수동 `Collections.unmodifiable…`
36
+ * 유지(@Getter 미부착). **@Version**은 JPA 관리 내부 필드라 getter 제외(실측 37/38 무 getter).
37
+ * `{Entity}PK`는 필드 @Getter만, equals/hashCode·생성자는 수동. `false` = 수동 전량(생성기/코퍼스 패리티,
38
+ * 바이트 골든 앵커 모드 — @Version getter 포함).
39
+ */
40
+ lombok?: boolean;
41
+ }
42
+ export interface ScaffoldedEntity {
43
+ modelId: ModelId;
44
+ /** `{ClassName}.java` */
45
+ fileName: string;
46
+ /** 조합·결정된 패키지(소비자 UI의 패키지 트리 그룹핑용). placeholder 폴백 시 `com.example`. */
47
+ packageName: string;
48
+ /** 컴파일 가능 최소 골격 자바 소스(`// TODO [손채움]` 포함). */
49
+ source: string;
50
+ /** 사람이 채울 지점 목록(라벨) — reconcile 보고용. */
51
+ fillIns: string[];
52
+ /** 신규 엔티티 경로에서만 write(기존엔 재추가 금지, §4.4) — reconcile 판단. */
53
+ repository?: {
54
+ fileName: string;
55
+ source: string;
56
+ };
57
+ }
58
+ /**
59
+ * 대상 엔티티들을 JPA 자바 소스로 렌더한다. `logical`은 참조 폐포(FK 대상 등) 해소를 위해 전체를 받고,
60
+ * `targetIds`가 실제 산출(파일 생성) 스코프다. 스코프 밖 엔티티는 읽기(폐포)에만 쓰이고 산출되지 않는다.
61
+ */
62
+ export declare function scaffoldEntityJava(logical: LogicalModel, targetIds: readonly ModelId[], opts?: ScaffoldOptions): ScaffoldedEntity[];