ormbridge 0.9.0 → 0.11.0
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/README.md +19 -18
- package/dist/cliRunner.js +4 -4
- package/dist/cliRunner.js.map +1 -1
- package/dist/config.d.ts +2 -2
- package/dist/convert.js +30 -1
- package/dist/convert.js.map +1 -1
- package/dist/emitters/cockroach.d.ts +33 -0
- package/dist/emitters/cockroach.js +81 -0
- package/dist/emitters/cockroach.js.map +1 -0
- package/dist/emitters/doctrine.js +11 -0
- package/dist/emitters/doctrine.js.map +1 -1
- package/dist/emitters/drizzle.js +39 -4
- package/dist/emitters/drizzle.js.map +1 -1
- package/dist/emitters/efcore.js +18 -1
- package/dist/emitters/efcore.js.map +1 -1
- package/dist/emitters/efcoreColumns.js +23 -2
- package/dist/emitters/efcoreColumns.js.map +1 -1
- package/dist/emitters/gorm.js +20 -1
- package/dist/emitters/gorm.js.map +1 -1
- package/dist/emitters/jpa.d.ts +36 -0
- package/dist/emitters/jpa.js +262 -0
- package/dist/emitters/jpa.js.map +1 -0
- package/dist/emitters/jpaColumns.d.ts +27 -0
- package/dist/emitters/jpaColumns.js +342 -0
- package/dist/emitters/jpaColumns.js.map +1 -0
- package/dist/emitters/jpaDefaults.d.ts +24 -0
- package/dist/emitters/jpaDefaults.js +223 -0
- package/dist/emitters/jpaDefaults.js.map +1 -0
- package/dist/emitters/jpaEnums.d.ts +11 -0
- package/dist/emitters/jpaEnums.js +134 -0
- package/dist/emitters/jpaEnums.js.map +1 -0
- package/dist/emitters/jpaFormat.d.ts +16 -0
- package/dist/emitters/jpaFormat.js +73 -0
- package/dist/emitters/jpaFormat.js.map +1 -0
- package/dist/emitters/jpaKeys.d.ts +25 -0
- package/dist/emitters/jpaKeys.js +110 -0
- package/dist/emitters/jpaKeys.js.map +1 -0
- package/dist/emitters/jpaNames.d.ts +26 -0
- package/dist/emitters/jpaNames.js +234 -0
- package/dist/emitters/jpaNames.js.map +1 -0
- package/dist/emitters/jpaRelations.d.ts +41 -0
- package/dist/emitters/jpaRelations.js +304 -0
- package/dist/emitters/jpaRelations.js.map +1 -0
- package/dist/emitters/jpaRender.d.ts +10 -0
- package/dist/emitters/jpaRender.js +81 -0
- package/dist/emitters/jpaRender.js.map +1 -0
- package/dist/emitters/jpaScalars.d.ts +32 -0
- package/dist/emitters/jpaScalars.js +201 -0
- package/dist/emitters/jpaScalars.js.map +1 -0
- package/dist/emitters/jpaTable.d.ts +10 -0
- package/dist/emitters/jpaTable.js +109 -0
- package/dist/emitters/jpaTable.js.map +1 -0
- package/dist/emitters/jpaTypes.d.ts +85 -0
- package/dist/emitters/jpaTypes.js +36 -0
- package/dist/emitters/jpaTypes.js.map +1 -0
- package/dist/emitters/laravel.js +11 -0
- package/dist/emitters/laravel.js.map +1 -1
- package/dist/emitters/prisma.d.ts +1 -1
- package/dist/emitters/prisma.js +47 -5
- package/dist/emitters/prisma.js.map +1 -1
- package/dist/emitters/sequelize.js +82 -6
- package/dist/emitters/sequelize.js.map +1 -1
- package/dist/emitters/sqlClickhouse.d.ts +43 -0
- package/dist/emitters/sqlClickhouse.js +265 -0
- package/dist/emitters/sqlClickhouse.js.map +1 -0
- package/dist/emitters/sqlClickhouseIndexes.d.ts +3 -0
- package/dist/emitters/sqlClickhouseIndexes.js +98 -0
- package/dist/emitters/sqlClickhouseIndexes.js.map +1 -0
- package/dist/emitters/sqlClickhouseTypes.d.ts +39 -0
- package/dist/emitters/sqlClickhouseTypes.js +360 -0
- package/dist/emitters/sqlClickhouseTypes.js.map +1 -0
- package/dist/emitters/sqlDdl.d.ts +29 -1
- package/dist/emitters/sqlDdl.js +141 -21
- package/dist/emitters/sqlDdl.js.map +1 -1
- package/dist/emitters/sqlalchemy.d.ts +7 -1
- package/dist/emitters/sqlalchemy.js +39 -0
- package/dist/emitters/sqlalchemy.js.map +1 -1
- package/dist/emitters/typeorm.js +44 -9
- package/dist/emitters/typeorm.js.map +1 -1
- package/dist/formats.d.ts +5 -2
- package/dist/formats.js +36 -1
- package/dist/formats.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/io.js +27 -1
- package/dist/io.js.map +1 -1
- package/dist/parsers/javaSyntax.d.ts +120 -0
- package/dist/parsers/javaSyntax.js +304 -0
- package/dist/parsers/javaSyntax.js.map +1 -0
- package/dist/parsers/javaValues.d.ts +5 -0
- package/dist/parsers/javaValues.js +187 -0
- package/dist/parsers/javaValues.js.map +1 -0
- package/dist/parsers/jpa.d.ts +17 -0
- package/dist/parsers/jpa.js +131 -0
- package/dist/parsers/jpa.js.map +1 -0
- package/dist/parsers/jpaAnnotations.d.ts +46 -0
- package/dist/parsers/jpaAnnotations.js +156 -0
- package/dist/parsers/jpaAnnotations.js.map +1 -0
- package/dist/parsers/jpaBuild.d.ts +4 -0
- package/dist/parsers/jpaBuild.js +297 -0
- package/dist/parsers/jpaBuild.js.map +1 -0
- package/dist/parsers/jpaClasses.d.ts +27 -0
- package/dist/parsers/jpaClasses.js +257 -0
- package/dist/parsers/jpaClasses.js.map +1 -0
- package/dist/parsers/jpaCollections.d.ts +12 -0
- package/dist/parsers/jpaCollections.js +106 -0
- package/dist/parsers/jpaCollections.js.map +1 -0
- package/dist/parsers/jpaColumns.d.ts +26 -0
- package/dist/parsers/jpaColumns.js +361 -0
- package/dist/parsers/jpaColumns.js.map +1 -0
- package/dist/parsers/jpaEntities.d.ts +9 -0
- package/dist/parsers/jpaEntities.js +181 -0
- package/dist/parsers/jpaEntities.js.map +1 -0
- package/dist/parsers/jpaIndexes.d.ts +12 -0
- package/dist/parsers/jpaIndexes.js +87 -0
- package/dist/parsers/jpaIndexes.js.map +1 -0
- package/dist/parsers/jpaJoins.d.ts +68 -0
- package/dist/parsers/jpaJoins.js +131 -0
- package/dist/parsers/jpaJoins.js.map +1 -0
- package/dist/parsers/jpaModel.d.ts +73 -0
- package/dist/parsers/jpaModel.js +2 -0
- package/dist/parsers/jpaModel.js.map +1 -0
- package/dist/parsers/jpaNotes.d.ts +20 -0
- package/dist/parsers/jpaNotes.js +138 -0
- package/dist/parsers/jpaNotes.js.map +1 -0
- package/dist/parsers/jpaRelations.d.ts +4 -0
- package/dist/parsers/jpaRelations.js +242 -0
- package/dist/parsers/jpaRelations.js.map +1 -0
- package/dist/parsers/jpaTypes.d.ts +23 -0
- package/dist/parsers/jpaTypes.js +232 -0
- package/dist/parsers/jpaTypes.js.map +1 -0
- package/dist/parsers/prisma.js +9 -1
- package/dist/parsers/prisma.js.map +1 -1
- package/dist/parsers/sqlDdl.js +40 -2
- package/dist/parsers/sqlDdl.js.map +1 -1
- package/dist/parsers/sqlSyntax.js +15 -1
- package/dist/parsers/sqlSyntax.js.map +1 -1
- package/dist/parsers/sqlTypes.js +37 -2
- package/dist/parsers/sqlTypes.js.map +1 -1
- package/dist/parsers/typeorm.js +2 -0
- package/dist/parsers/typeorm.js.map +1 -1
- package/dist/styles.d.ts +3 -2
- package/dist/styles.js +4 -1
- package/dist/styles.js.map +1 -1
- package/package.json +8 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jpaBuild.js","sourceRoot":"","sources":["../../src/parsers/jpaBuild.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Annotated, type Ann } from './jpaAnnotations.js';
|
|
2
|
+
import type { JavaClass, JavaType } from './javaSyntax.js';
|
|
3
|
+
import type { Attribute, Member, Project } from './jpaModel.js';
|
|
4
|
+
/** Annotations on the class itself. */
|
|
5
|
+
export declare function classNotes(project: Project, cls: JavaClass): Annotated;
|
|
6
|
+
export declare function isEntityClass(project: Project, cls: JavaClass): boolean;
|
|
7
|
+
export declare function isEmbeddableClass(project: Project, cls: JavaClass): boolean;
|
|
8
|
+
export declare function isMappedSuperclass(project: Project, cls: JavaClass): boolean;
|
|
9
|
+
/** Explicit `@Access`, else where the `@Id` (or `@EmbeddedId`) is written, else the access of the superclass. */
|
|
10
|
+
export declare function accessOf(project: Project, cls: JavaClass, inherited: 'field' | 'property'): 'field' | 'property';
|
|
11
|
+
/** The attributes a class declares (not the ones it inherits), by field or by getter, in source order. */
|
|
12
|
+
export declare function attributesOf(project: Project, cls: JavaClass, access: 'field' | 'property', warn: (message: string) => void): Attribute[];
|
|
13
|
+
/** Class-level `@AttributeOverride`s (they rename columns inherited from a mapped superclass or embedded id). */
|
|
14
|
+
export declare function classOverrides(project: Project, cls: JavaClass, warn: (message: string) => void): Map<string, Ann>;
|
|
15
|
+
export interface FlattenContext {
|
|
16
|
+
project: Project;
|
|
17
|
+
warn: (message: string) => void;
|
|
18
|
+
/** The entity (or subclass) the members are collected for. */
|
|
19
|
+
declaredIn: string;
|
|
20
|
+
/** Type arguments a subclass gives its generic superclass: `BaseEntity<Long>` makes `T` a `Long`. */
|
|
21
|
+
generics?: ReadonlyMap<string, JavaType>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The members of one class: its attributes with the embedded ones replaced by the attributes of the embeddable
|
|
25
|
+
* (at any depth), each with the column override that applies.
|
|
26
|
+
*/
|
|
27
|
+
export declare function membersOf(ctx: FlattenContext, cls: JavaClass, access: 'field' | 'property', path: string[], overrides: Map<string, Ann>, insideId: boolean): Member[];
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import { Annotated } from './jpaAnnotations.js';
|
|
2
|
+
import { decapitalize, isMapType } from './jpaTypes.js';
|
|
3
|
+
const MAX_EMBEDDING_DEPTH = 8;
|
|
4
|
+
/** Annotations on the class itself. */
|
|
5
|
+
export function classNotes(project, cls) {
|
|
6
|
+
return new Annotated(cls.annotations, project.lookup, cls.imports);
|
|
7
|
+
}
|
|
8
|
+
export function isEntityClass(project, cls) {
|
|
9
|
+
return cls.kind === 'class' && classNotes(project, cls).has('Entity');
|
|
10
|
+
}
|
|
11
|
+
export function isEmbeddableClass(project, cls) {
|
|
12
|
+
return cls.kind === 'class' && classNotes(project, cls).has('Embeddable');
|
|
13
|
+
}
|
|
14
|
+
export function isMappedSuperclass(project, cls) {
|
|
15
|
+
return (cls.kind === 'class' && classNotes(project, cls).has('MappedSuperclass'));
|
|
16
|
+
}
|
|
17
|
+
function isStatic(modifiers) {
|
|
18
|
+
return modifiers.includes('static');
|
|
19
|
+
}
|
|
20
|
+
function fieldAttribute(project, cls, field) {
|
|
21
|
+
const attribute = {
|
|
22
|
+
name: field.name,
|
|
23
|
+
type: field.type,
|
|
24
|
+
notes: new Annotated(field.annotations, project.lookup, cls.imports),
|
|
25
|
+
declaredIn: cls.name,
|
|
26
|
+
imports: cls.imports,
|
|
27
|
+
isProperty: false,
|
|
28
|
+
...(field.initializer === undefined
|
|
29
|
+
? {}
|
|
30
|
+
: { initializer: field.initializer }),
|
|
31
|
+
};
|
|
32
|
+
return attribute;
|
|
33
|
+
}
|
|
34
|
+
/** True for `getX()` / `isX()` without parameters. */
|
|
35
|
+
function propertyName(method) {
|
|
36
|
+
if (method.parameters.length > 0 || method.returnType.name === 'void') {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
const getter = method.name.match(/^get([A-Z]\w*)$/);
|
|
40
|
+
if (getter !== null) {
|
|
41
|
+
return decapitalize(getter[1] ?? '');
|
|
42
|
+
}
|
|
43
|
+
const flag = method.name.match(/^is([A-Z]\w*)$/);
|
|
44
|
+
if (flag !== null && /^(boolean|Boolean)$/.test(method.returnType.name)) {
|
|
45
|
+
return decapitalize(flag[1] ?? '');
|
|
46
|
+
}
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
/** Explicit `@Access`, else where the `@Id` (or `@EmbeddedId`) is written, else the access of the superclass. */
|
|
50
|
+
export function accessOf(project, cls, inherited) {
|
|
51
|
+
const notes = classNotes(project, cls);
|
|
52
|
+
const explicit = notes.get('Access')?.member('value');
|
|
53
|
+
if (explicit === 'PROPERTY') {
|
|
54
|
+
return 'property';
|
|
55
|
+
}
|
|
56
|
+
if (explicit === 'FIELD') {
|
|
57
|
+
return 'field';
|
|
58
|
+
}
|
|
59
|
+
const idNames = ['Id', 'EmbeddedId'];
|
|
60
|
+
const onField = cls.fields.some((field) => !isStatic(field.modifiers) &&
|
|
61
|
+
field.annotations.some((annotation) => idNames.includes(annotation.name)));
|
|
62
|
+
if (onField) {
|
|
63
|
+
return 'field';
|
|
64
|
+
}
|
|
65
|
+
const onMethod = cls.methods.some((method) => method.annotations.some((annotation) => idNames.includes(annotation.name)));
|
|
66
|
+
return onMethod ? 'property' : inherited;
|
|
67
|
+
}
|
|
68
|
+
/** The attributes a class declares (not the ones it inherits), by field or by getter, in source order. */
|
|
69
|
+
export function attributesOf(project, cls, access, warn) {
|
|
70
|
+
const attributes = [];
|
|
71
|
+
const persistence = new Set([
|
|
72
|
+
'Column',
|
|
73
|
+
'Id',
|
|
74
|
+
'ManyToOne',
|
|
75
|
+
'OneToMany',
|
|
76
|
+
'OneToOne',
|
|
77
|
+
'ManyToMany',
|
|
78
|
+
'Embedded',
|
|
79
|
+
'ElementCollection',
|
|
80
|
+
'Enumerated',
|
|
81
|
+
]);
|
|
82
|
+
if (access === 'field') {
|
|
83
|
+
for (const field of cls.fields) {
|
|
84
|
+
const keywords = field.modifiers;
|
|
85
|
+
if (isStatic(keywords) || keywords.includes('transient')) {
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
const attribute = fieldAttribute(project, cls, field);
|
|
89
|
+
if (attribute.notes.has('Transient')) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
attributes.push(attribute);
|
|
93
|
+
}
|
|
94
|
+
for (const method of cls.methods) {
|
|
95
|
+
if (method.annotations.some((item) => item.name === 'Access')) {
|
|
96
|
+
warn(`${cls.name}.${method.name}: an attribute switched to property access with @Access is not read; annotate the field instead.`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return attributes;
|
|
100
|
+
}
|
|
101
|
+
for (const method of cls.methods) {
|
|
102
|
+
const name = propertyName(method);
|
|
103
|
+
if (name === undefined || isStatic(method.modifiers)) {
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
const attribute = {
|
|
107
|
+
name,
|
|
108
|
+
type: method.returnType,
|
|
109
|
+
notes: new Annotated(method.annotations, project.lookup, cls.imports),
|
|
110
|
+
declaredIn: cls.name,
|
|
111
|
+
imports: cls.imports,
|
|
112
|
+
isProperty: true,
|
|
113
|
+
};
|
|
114
|
+
if (attribute.notes.has('Transient')) {
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
attributes.push(attribute);
|
|
118
|
+
}
|
|
119
|
+
for (const field of cls.fields) {
|
|
120
|
+
if (field.annotations.some((annotation) => persistence.has(annotation.name))) {
|
|
121
|
+
warn(`${cls.name}.${field.name}: the annotations on a field are ignored because the class uses property access (the @Id is on a getter or @Access(PROPERTY) is set); put them on the getter.`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return attributes;
|
|
125
|
+
}
|
|
126
|
+
const RELATION_ANNOTATIONS = [
|
|
127
|
+
'ManyToOne',
|
|
128
|
+
'OneToOne',
|
|
129
|
+
'OneToMany',
|
|
130
|
+
'ManyToMany',
|
|
131
|
+
];
|
|
132
|
+
/** How an attribute is mapped: a column, a relationship, or an element collection; embedded ones are flattened. */
|
|
133
|
+
function kindOf(attribute) {
|
|
134
|
+
const notes = attribute.notes;
|
|
135
|
+
if (RELATION_ANNOTATIONS.some((name) => notes.has(name))) {
|
|
136
|
+
return 'relation';
|
|
137
|
+
}
|
|
138
|
+
if (notes.has('ElementCollection')) {
|
|
139
|
+
return 'collection';
|
|
140
|
+
}
|
|
141
|
+
if (notes.has('Embedded') || notes.has('EmbeddedId')) {
|
|
142
|
+
return 'embedded';
|
|
143
|
+
}
|
|
144
|
+
return 'basic';
|
|
145
|
+
}
|
|
146
|
+
/** `@AttributeOverride(s)` of an attribute or class by the path they name. */
|
|
147
|
+
function overridesOf(notes, into, warn, place) {
|
|
148
|
+
for (const override of notes.repeated('AttributeOverride', 'AttributeOverrides')) {
|
|
149
|
+
const name = override.string('name');
|
|
150
|
+
const column = override.annotation('column');
|
|
151
|
+
if (name !== undefined && column !== undefined && !into.has(name)) {
|
|
152
|
+
into.set(name, column);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
if (notes.repeated('AssociationOverride', 'AssociationOverrides').length > 0) {
|
|
156
|
+
warn(`${place}: @AssociationOverride is not applied; the join columns of the embedded relationship keep their default names.`);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/** Class-level `@AttributeOverride`s (they rename columns inherited from a mapped superclass or embedded id). */
|
|
160
|
+
export function classOverrides(project, cls, warn) {
|
|
161
|
+
const overrides = new Map();
|
|
162
|
+
overridesOf(classNotes(project, cls), overrides, warn, cls.name);
|
|
163
|
+
return overrides;
|
|
164
|
+
}
|
|
165
|
+
/** Replaces the type parameters of a generic superclass by the arguments a subclass gave it. */
|
|
166
|
+
function substitute(type, generics) {
|
|
167
|
+
if (generics === undefined || generics.size === 0) {
|
|
168
|
+
return type;
|
|
169
|
+
}
|
|
170
|
+
const replacement = generics.get(type.name);
|
|
171
|
+
const args = type.args.map((item) => substitute(item, generics));
|
|
172
|
+
if (replacement !== undefined && type.args.length === 0) {
|
|
173
|
+
return {
|
|
174
|
+
...replacement,
|
|
175
|
+
arrayDepth: replacement.arrayDepth + type.arrayDepth,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
return { ...type, args };
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* The members of one class: its attributes with the embedded ones replaced by the attributes of the embeddable
|
|
182
|
+
* (at any depth), each with the column override that applies.
|
|
183
|
+
*/
|
|
184
|
+
export function membersOf(ctx, cls, access, path, overrides, insideId) {
|
|
185
|
+
const members = [];
|
|
186
|
+
const attributes = attributesOf(ctx.project, cls, access, ctx.warn).map((attribute) => ({
|
|
187
|
+
...attribute,
|
|
188
|
+
type: substitute(attribute.type, ctx.generics),
|
|
189
|
+
}));
|
|
190
|
+
for (const attribute of attributes) {
|
|
191
|
+
const place = `${ctx.declaredIn}.${[...path, attribute.name].join('.')}`;
|
|
192
|
+
if (attribute.notes.has('Formula', true)) {
|
|
193
|
+
ctx.warn(`${place}: @Formula is computed in queries, not stored in a column; the attribute was skipped.`);
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
if (attribute.notes.has('ManyToAny') ||
|
|
197
|
+
attribute.notes.has('Any') ||
|
|
198
|
+
attribute.notes.has('Any', true)) {
|
|
199
|
+
ctx.warn(`${place}: @Any / @ManyToAny polymorphic associations have no equivalent; the attribute was skipped.`);
|
|
200
|
+
continue;
|
|
201
|
+
}
|
|
202
|
+
const kind = kindOf(attribute);
|
|
203
|
+
const target = ctx.project.classes.get(attribute.type.name);
|
|
204
|
+
const isEmbeddedType = kind === 'basic' &&
|
|
205
|
+
attribute.type.arrayDepth === 0 &&
|
|
206
|
+
target !== undefined &&
|
|
207
|
+
isEmbeddableClass(ctx.project, target);
|
|
208
|
+
if (kind === 'embedded' || isEmbeddedType) {
|
|
209
|
+
const idRole = attribute.notes.has('EmbeddedId');
|
|
210
|
+
if (target === undefined || path.length >= MAX_EMBEDDING_DEPTH) {
|
|
211
|
+
ctx.warn(`${place}: the embedded type ${attribute.type.name} is not in the input (or is nested too deeply); its columns were not read.`);
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
const nested = new Map();
|
|
215
|
+
overridesOf(attribute.notes, nested, ctx.warn, place);
|
|
216
|
+
for (const [name, column] of overrides) {
|
|
217
|
+
if (name.startsWith(`${attribute.name}.`)) {
|
|
218
|
+
nested.set(name.slice(attribute.name.length + 1), column);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
members.push(...membersOf(ctx, target, embeddableAccess(ctx.project, target, access), [...path, attribute.name], nested, insideId || idRole));
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
if (attribute.type.name === 'Optional') {
|
|
225
|
+
ctx.warn(`${place}: JPA does not allow Optional on a field or getter (Hibernate rejects it); use a nullable type. The attribute was skipped.`);
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
const memberKind = kind;
|
|
229
|
+
if (memberKind === 'basic' &&
|
|
230
|
+
isMapType(attribute.type) &&
|
|
231
|
+
!attribute.notes.has('JdbcTypeCode', true) &&
|
|
232
|
+
!attribute.notes.has('Type', true)) {
|
|
233
|
+
ctx.warn(`${place}: a Map attribute without @ElementCollection or a JSON type has no column mapping; the attribute was skipped.`);
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
const own = attribute.notes.get('Column');
|
|
237
|
+
const override = overrides.get(attribute.name);
|
|
238
|
+
members.push({
|
|
239
|
+
attr: attribute,
|
|
240
|
+
path: [...path, attribute.name],
|
|
241
|
+
kind: memberKind,
|
|
242
|
+
...(override === undefined && own === undefined
|
|
243
|
+
? {}
|
|
244
|
+
: { column: override ?? own }),
|
|
245
|
+
isId: attribute.notes.has('Id') || insideId,
|
|
246
|
+
inEmbeddedId: insideId,
|
|
247
|
+
declaredIn: ctx.declaredIn,
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
return members;
|
|
251
|
+
}
|
|
252
|
+
/** An embeddable follows the access type of the entity that embeds it unless it says otherwise. */
|
|
253
|
+
function embeddableAccess(project, cls, inherited) {
|
|
254
|
+
const notes = classNotes(project, cls);
|
|
255
|
+
return notes.has('Access') ? accessOf(project, cls, inherited) : inherited;
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=jpaClasses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jpaClasses.js","sourceRoot":"","sources":["../../src/parsers/jpaClasses.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IrEnum, IrModel } from '../ir.js';
|
|
2
|
+
import type { EntityInfo, Member, Project } from './jpaModel.js';
|
|
3
|
+
import type { Resolver } from './jpaJoins.js';
|
|
4
|
+
export interface CollectionTable {
|
|
5
|
+
model: IrModel;
|
|
6
|
+
enumDefinition?: IrEnum;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Reads an `@ElementCollection` of basic values (`List<String>`, `Set<Role>`) as the child table Hibernate creates:
|
|
10
|
+
* the owner's key as a foreign key plus the value column. Collections of embeddables and maps are skipped.
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildCollection(owner: EntityInfo, member: Member, project: Project, resolver: Resolver, taken: ReadonlySet<string>): CollectionTable | undefined;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { buildField, cleanIdentifier } from './jpaColumns.js';
|
|
2
|
+
import { modelOwner } from './jpaJoins.js';
|
|
3
|
+
import { decapitalize, elementOf, isMapType } from './jpaTypes.js';
|
|
4
|
+
function capitalize(name) {
|
|
5
|
+
return name.charAt(0).toUpperCase() + name.slice(1);
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Reads an `@ElementCollection` of basic values (`List<String>`, `Set<Role>`) as the child table Hibernate creates:
|
|
9
|
+
* the owner's key as a foreign key plus the value column. Collections of embeddables and maps are skipped.
|
|
10
|
+
*/
|
|
11
|
+
export function buildCollection(owner, member, project, resolver, taken) {
|
|
12
|
+
const place = `${owner.name}.${member.path.join('.')}`;
|
|
13
|
+
const type = member.attr.type;
|
|
14
|
+
const element = elementOf(type);
|
|
15
|
+
if (isMapType(type) || element === undefined) {
|
|
16
|
+
resolver.warn(`${place}: an @ElementCollection that is not a List, Set or array of basic values (a Map, for example) is not read; its table was skipped.`);
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
const embeddable = project.classes.get(element.name);
|
|
20
|
+
if (embeddable !== undefined &&
|
|
21
|
+
embeddable.annotations.some((item) => item.name === 'Embeddable')) {
|
|
22
|
+
resolver.warn(`${place}: an @ElementCollection of the embeddable ${element.name} is stored in its own table, which is not read; the attribute was skipped.`);
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
const keys = resolver.keyOf(owner);
|
|
26
|
+
const key = keys[0];
|
|
27
|
+
if (key === undefined || keys.length > 1) {
|
|
28
|
+
resolver.warn(`${place}: the owner ${owner.name} needs a single-column key for the table of the @ElementCollection; the attribute was skipped.`);
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
const notes = member.attr.notes;
|
|
32
|
+
const collectionTable = notes.get('CollectionTable');
|
|
33
|
+
const joinColumn = collectionTable?.annotations('joinColumns')[0];
|
|
34
|
+
const attributeName = member.attr.name;
|
|
35
|
+
const tableName = collectionTable?.string('name') || `${owner.entityName}_${attributeName}`;
|
|
36
|
+
const ownerColumn = joinColumn?.string('name') || `${owner.entityName}_${key.columnName}`;
|
|
37
|
+
// The value column: the @Column of the attribute describes it.
|
|
38
|
+
const valueMember = {
|
|
39
|
+
...member,
|
|
40
|
+
attr: { ...member.attr, type: element },
|
|
41
|
+
isId: false,
|
|
42
|
+
kind: 'basic',
|
|
43
|
+
};
|
|
44
|
+
const built = buildField(valueMember, { project, entity: owner, warn: resolver.warn }, false);
|
|
45
|
+
const isSet = /Set$/.test(type.name);
|
|
46
|
+
const order = notes.get('OrderColumn');
|
|
47
|
+
const fields = [
|
|
48
|
+
{
|
|
49
|
+
...built.field,
|
|
50
|
+
isNullable: built.field.isNullable,
|
|
51
|
+
},
|
|
52
|
+
];
|
|
53
|
+
const relationName = decapitalize(owner.name);
|
|
54
|
+
const onDeleteName = notes
|
|
55
|
+
.get('OnDelete', true)
|
|
56
|
+
?.member('action');
|
|
57
|
+
const relation = {
|
|
58
|
+
name: relationName,
|
|
59
|
+
kind: 'foreignKey',
|
|
60
|
+
targetModel: modelOwner(owner).name,
|
|
61
|
+
columnName: cleanIdentifier(ownerColumn),
|
|
62
|
+
isNullable: false,
|
|
63
|
+
onDelete: onDeleteName === 'CASCADE' ? 'cascade' : 'noAction',
|
|
64
|
+
};
|
|
65
|
+
let compositePrimaryKey;
|
|
66
|
+
if (order !== undefined) {
|
|
67
|
+
const orderField = {
|
|
68
|
+
name: `${attributeName}Order`,
|
|
69
|
+
columnName: order.string('name') || `${attributeName}_ORDER`,
|
|
70
|
+
type: 'int',
|
|
71
|
+
isPrimaryKey: false,
|
|
72
|
+
isUnique: false,
|
|
73
|
+
isNullable: false,
|
|
74
|
+
isAutoUpdated: false,
|
|
75
|
+
};
|
|
76
|
+
fields.push(orderField);
|
|
77
|
+
compositePrimaryKey = [relationName, orderField.name];
|
|
78
|
+
}
|
|
79
|
+
else if (isSet && !built.field.isNullable) {
|
|
80
|
+
compositePrimaryKey = [relationName, built.field.name];
|
|
81
|
+
}
|
|
82
|
+
let name = `${owner.name}${capitalize(attributeName)}`;
|
|
83
|
+
while (taken.has(name)) {
|
|
84
|
+
name = `${name}Item`;
|
|
85
|
+
}
|
|
86
|
+
resolver.warn(`${place}: the @ElementCollection is stored in the child table "${tableName}"; it was read as the model ${name}, with a foreign key to ${owner.name}` +
|
|
87
|
+
(compositePrimaryKey === undefined
|
|
88
|
+
? ' and no primary key (as in Hibernate: a Set has one only when its column is NOT NULL, a List only with @OrderColumn; other formats expect one).'
|
|
89
|
+
: '.'));
|
|
90
|
+
const model = {
|
|
91
|
+
name,
|
|
92
|
+
tableName: cleanIdentifier(tableName),
|
|
93
|
+
appLabel: project.appLabel,
|
|
94
|
+
fields,
|
|
95
|
+
relations: [relation],
|
|
96
|
+
indexes: [],
|
|
97
|
+
...(compositePrimaryKey === undefined ? {} : { compositePrimaryKey }),
|
|
98
|
+
};
|
|
99
|
+
return {
|
|
100
|
+
model,
|
|
101
|
+
...(built.enumDefinition === undefined
|
|
102
|
+
? {}
|
|
103
|
+
: { enumDefinition: built.enumDefinition }),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=jpaCollections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jpaCollections.js","sourceRoot":"","sources":["../../src/parsers/jpaCollections.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { IrEnum, IrField } from '../ir.js';
|
|
2
|
+
import type { EntityInfo, Member, Project } from './jpaModel.js';
|
|
3
|
+
/** What building a column needs to know. */
|
|
4
|
+
export interface ColumnContext {
|
|
5
|
+
project: Project;
|
|
6
|
+
entity: EntityInfo;
|
|
7
|
+
warn: (message: string) => void;
|
|
8
|
+
}
|
|
9
|
+
/** An IR field with the member it came from. */
|
|
10
|
+
export interface BuiltField {
|
|
11
|
+
field: IrField;
|
|
12
|
+
member: Member;
|
|
13
|
+
enumDefinition?: IrEnum;
|
|
14
|
+
/** True when the attribute is part of the natural id (`@NaturalId`). */
|
|
15
|
+
naturalId: boolean;
|
|
16
|
+
/** True for `@Column(insertable = false, updatable = false)`: a second mapping of a column. */
|
|
17
|
+
readOnly: boolean;
|
|
18
|
+
}
|
|
19
|
+
/** The IR name of a member: `address.street` is `addressStreet`. */
|
|
20
|
+
export declare function irFieldName(member: Member): string;
|
|
21
|
+
/** Removes the backticks and quotes that make an identifier case-sensitive: `` `Order` `` is `Order`. */
|
|
22
|
+
export declare function cleanIdentifier(name: string): string;
|
|
23
|
+
/** The database column name: `@Column(name)`, else the attribute name. */
|
|
24
|
+
export declare function columnNameOf(member: Member): string;
|
|
25
|
+
/** Builds the IR field for one mapped column. */
|
|
26
|
+
export declare function buildField(member: Member, ctx: ColumnContext, singleKey: boolean): BuiltField;
|