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.
Files changed (146) hide show
  1. package/README.md +19 -18
  2. package/dist/cliRunner.js +4 -4
  3. package/dist/cliRunner.js.map +1 -1
  4. package/dist/config.d.ts +2 -2
  5. package/dist/convert.js +30 -1
  6. package/dist/convert.js.map +1 -1
  7. package/dist/emitters/cockroach.d.ts +33 -0
  8. package/dist/emitters/cockroach.js +81 -0
  9. package/dist/emitters/cockroach.js.map +1 -0
  10. package/dist/emitters/doctrine.js +11 -0
  11. package/dist/emitters/doctrine.js.map +1 -1
  12. package/dist/emitters/drizzle.js +39 -4
  13. package/dist/emitters/drizzle.js.map +1 -1
  14. package/dist/emitters/efcore.js +18 -1
  15. package/dist/emitters/efcore.js.map +1 -1
  16. package/dist/emitters/efcoreColumns.js +23 -2
  17. package/dist/emitters/efcoreColumns.js.map +1 -1
  18. package/dist/emitters/gorm.js +20 -1
  19. package/dist/emitters/gorm.js.map +1 -1
  20. package/dist/emitters/jpa.d.ts +36 -0
  21. package/dist/emitters/jpa.js +262 -0
  22. package/dist/emitters/jpa.js.map +1 -0
  23. package/dist/emitters/jpaColumns.d.ts +27 -0
  24. package/dist/emitters/jpaColumns.js +342 -0
  25. package/dist/emitters/jpaColumns.js.map +1 -0
  26. package/dist/emitters/jpaDefaults.d.ts +24 -0
  27. package/dist/emitters/jpaDefaults.js +223 -0
  28. package/dist/emitters/jpaDefaults.js.map +1 -0
  29. package/dist/emitters/jpaEnums.d.ts +11 -0
  30. package/dist/emitters/jpaEnums.js +134 -0
  31. package/dist/emitters/jpaEnums.js.map +1 -0
  32. package/dist/emitters/jpaFormat.d.ts +16 -0
  33. package/dist/emitters/jpaFormat.js +73 -0
  34. package/dist/emitters/jpaFormat.js.map +1 -0
  35. package/dist/emitters/jpaKeys.d.ts +25 -0
  36. package/dist/emitters/jpaKeys.js +110 -0
  37. package/dist/emitters/jpaKeys.js.map +1 -0
  38. package/dist/emitters/jpaNames.d.ts +26 -0
  39. package/dist/emitters/jpaNames.js +234 -0
  40. package/dist/emitters/jpaNames.js.map +1 -0
  41. package/dist/emitters/jpaRelations.d.ts +41 -0
  42. package/dist/emitters/jpaRelations.js +304 -0
  43. package/dist/emitters/jpaRelations.js.map +1 -0
  44. package/dist/emitters/jpaRender.d.ts +10 -0
  45. package/dist/emitters/jpaRender.js +81 -0
  46. package/dist/emitters/jpaRender.js.map +1 -0
  47. package/dist/emitters/jpaScalars.d.ts +32 -0
  48. package/dist/emitters/jpaScalars.js +201 -0
  49. package/dist/emitters/jpaScalars.js.map +1 -0
  50. package/dist/emitters/jpaTable.d.ts +10 -0
  51. package/dist/emitters/jpaTable.js +109 -0
  52. package/dist/emitters/jpaTable.js.map +1 -0
  53. package/dist/emitters/jpaTypes.d.ts +85 -0
  54. package/dist/emitters/jpaTypes.js +36 -0
  55. package/dist/emitters/jpaTypes.js.map +1 -0
  56. package/dist/emitters/laravel.js +11 -0
  57. package/dist/emitters/laravel.js.map +1 -1
  58. package/dist/emitters/prisma.d.ts +1 -1
  59. package/dist/emitters/prisma.js +47 -5
  60. package/dist/emitters/prisma.js.map +1 -1
  61. package/dist/emitters/sequelize.js +82 -6
  62. package/dist/emitters/sequelize.js.map +1 -1
  63. package/dist/emitters/sqlClickhouse.d.ts +43 -0
  64. package/dist/emitters/sqlClickhouse.js +265 -0
  65. package/dist/emitters/sqlClickhouse.js.map +1 -0
  66. package/dist/emitters/sqlClickhouseIndexes.d.ts +3 -0
  67. package/dist/emitters/sqlClickhouseIndexes.js +98 -0
  68. package/dist/emitters/sqlClickhouseIndexes.js.map +1 -0
  69. package/dist/emitters/sqlClickhouseTypes.d.ts +39 -0
  70. package/dist/emitters/sqlClickhouseTypes.js +360 -0
  71. package/dist/emitters/sqlClickhouseTypes.js.map +1 -0
  72. package/dist/emitters/sqlDdl.d.ts +29 -1
  73. package/dist/emitters/sqlDdl.js +141 -21
  74. package/dist/emitters/sqlDdl.js.map +1 -1
  75. package/dist/emitters/sqlalchemy.d.ts +7 -1
  76. package/dist/emitters/sqlalchemy.js +39 -0
  77. package/dist/emitters/sqlalchemy.js.map +1 -1
  78. package/dist/emitters/typeorm.js +44 -9
  79. package/dist/emitters/typeorm.js.map +1 -1
  80. package/dist/formats.d.ts +5 -2
  81. package/dist/formats.js +36 -1
  82. package/dist/formats.js.map +1 -1
  83. package/dist/index.d.ts +4 -0
  84. package/dist/index.js +2 -0
  85. package/dist/index.js.map +1 -1
  86. package/dist/io.js +27 -1
  87. package/dist/io.js.map +1 -1
  88. package/dist/parsers/javaSyntax.d.ts +120 -0
  89. package/dist/parsers/javaSyntax.js +304 -0
  90. package/dist/parsers/javaSyntax.js.map +1 -0
  91. package/dist/parsers/javaValues.d.ts +5 -0
  92. package/dist/parsers/javaValues.js +187 -0
  93. package/dist/parsers/javaValues.js.map +1 -0
  94. package/dist/parsers/jpa.d.ts +17 -0
  95. package/dist/parsers/jpa.js +131 -0
  96. package/dist/parsers/jpa.js.map +1 -0
  97. package/dist/parsers/jpaAnnotations.d.ts +46 -0
  98. package/dist/parsers/jpaAnnotations.js +156 -0
  99. package/dist/parsers/jpaAnnotations.js.map +1 -0
  100. package/dist/parsers/jpaBuild.d.ts +4 -0
  101. package/dist/parsers/jpaBuild.js +297 -0
  102. package/dist/parsers/jpaBuild.js.map +1 -0
  103. package/dist/parsers/jpaClasses.d.ts +27 -0
  104. package/dist/parsers/jpaClasses.js +257 -0
  105. package/dist/parsers/jpaClasses.js.map +1 -0
  106. package/dist/parsers/jpaCollections.d.ts +12 -0
  107. package/dist/parsers/jpaCollections.js +106 -0
  108. package/dist/parsers/jpaCollections.js.map +1 -0
  109. package/dist/parsers/jpaColumns.d.ts +26 -0
  110. package/dist/parsers/jpaColumns.js +361 -0
  111. package/dist/parsers/jpaColumns.js.map +1 -0
  112. package/dist/parsers/jpaEntities.d.ts +9 -0
  113. package/dist/parsers/jpaEntities.js +181 -0
  114. package/dist/parsers/jpaEntities.js.map +1 -0
  115. package/dist/parsers/jpaIndexes.d.ts +12 -0
  116. package/dist/parsers/jpaIndexes.js +87 -0
  117. package/dist/parsers/jpaIndexes.js.map +1 -0
  118. package/dist/parsers/jpaJoins.d.ts +68 -0
  119. package/dist/parsers/jpaJoins.js +131 -0
  120. package/dist/parsers/jpaJoins.js.map +1 -0
  121. package/dist/parsers/jpaModel.d.ts +73 -0
  122. package/dist/parsers/jpaModel.js +2 -0
  123. package/dist/parsers/jpaModel.js.map +1 -0
  124. package/dist/parsers/jpaNotes.d.ts +20 -0
  125. package/dist/parsers/jpaNotes.js +138 -0
  126. package/dist/parsers/jpaNotes.js.map +1 -0
  127. package/dist/parsers/jpaRelations.d.ts +4 -0
  128. package/dist/parsers/jpaRelations.js +242 -0
  129. package/dist/parsers/jpaRelations.js.map +1 -0
  130. package/dist/parsers/jpaTypes.d.ts +23 -0
  131. package/dist/parsers/jpaTypes.js +232 -0
  132. package/dist/parsers/jpaTypes.js.map +1 -0
  133. package/dist/parsers/prisma.js +9 -1
  134. package/dist/parsers/prisma.js.map +1 -1
  135. package/dist/parsers/sqlDdl.js +40 -2
  136. package/dist/parsers/sqlDdl.js.map +1 -1
  137. package/dist/parsers/sqlSyntax.js +15 -1
  138. package/dist/parsers/sqlSyntax.js.map +1 -1
  139. package/dist/parsers/sqlTypes.js +37 -2
  140. package/dist/parsers/sqlTypes.js.map +1 -1
  141. package/dist/parsers/typeorm.js +2 -0
  142. package/dist/parsers/typeorm.js.map +1 -1
  143. package/dist/styles.d.ts +3 -2
  144. package/dist/styles.js +4 -1
  145. package/dist/styles.js.map +1 -1
  146. package/package.json +8 -1
@@ -0,0 +1,242 @@
1
+ import { toCamelCase, toSnakeCase } from '../naming.js';
2
+ import { cleanIdentifier, columnNameOf, irFieldName } from './jpaColumns.js';
3
+ import { cascadeNote, constraintName, joinColumnsOf, joinPairs, modelOwner, onDeleteOf, relationAnnotation, tableNameOf, targetOf, } from './jpaJoins.js';
4
+ import { decapitalize } from './jpaTypes.js';
5
+ /** Resolves the relationship attributes of one model. */
6
+ export function resolveRelations(model, members, resolver) {
7
+ const output = {
8
+ relations: [],
9
+ composite: [],
10
+ extraFields: [],
11
+ consumed: new Map(),
12
+ foreign: [],
13
+ inverse: [],
14
+ };
15
+ members.forEach((member, order) => {
16
+ if (member.kind !== 'relation') {
17
+ return;
18
+ }
19
+ const annotation = relationAnnotation(member);
20
+ const place = `${model.name}.${member.path.join('.')}`;
21
+ const target = targetOf(member, annotation, resolver);
22
+ if (target === undefined) {
23
+ resolver.warn(`${place}: the target type ${member.attr.type.args[0]?.name ?? member.attr.type.name} of @${annotation.name} is not an entity in the input; the relationship was skipped.`);
24
+ return;
25
+ }
26
+ cascadeNote(member, annotation, place, resolver);
27
+ const mappedBy = annotation.string('mappedBy');
28
+ if (mappedBy !== undefined && mappedBy !== '') {
29
+ output.inverse.push({
30
+ model: modelOwner(target),
31
+ attribute: mappedBy.split('.').pop() ?? mappedBy,
32
+ relatedName: member.attr.name,
33
+ });
34
+ return;
35
+ }
36
+ if (annotation.name === 'ManyToMany') {
37
+ manyToMany(model, member, target, order, output, resolver, place);
38
+ }
39
+ else if (annotation.name === 'OneToMany') {
40
+ oneToMany(model, member, target, order, output, resolver, place);
41
+ }
42
+ else {
43
+ toOne(model, member, annotation, target, order, output, resolver, place);
44
+ }
45
+ });
46
+ return output;
47
+ }
48
+ function toOne(model, member, annotation, target, order, output, resolver, place) {
49
+ const pairs = joinPairs(member, target, resolver, place);
50
+ if (pairs === undefined) {
51
+ return;
52
+ }
53
+ const targetModel = modelOwner(target);
54
+ const isOneToOne = annotation.name === 'OneToOne';
55
+ const optional = annotation.boolean('optional') !== false;
56
+ const mapsId = member.attr.notes.get('MapsId');
57
+ // The older way to share a key: @PrimaryKeyJoinColumn makes the id column the foreign key.
58
+ const sharesKey = mapsId !== undefined || member.attr.notes.has('PrimaryKeyJoinColumn');
59
+ const declaredNotNull = member.attr.notes.has('NotNull');
60
+ const nullable = optional &&
61
+ !declaredNotNull &&
62
+ pairs.every((pair) => pair.nullable !== false) &&
63
+ !member.isId &&
64
+ !sharesKey;
65
+ const name = irFieldName(member);
66
+ const onDelete = onDeleteOf(member, place, resolver);
67
+ const unique = isOneToOne || pairs.some((pair) => pair.unique);
68
+ const kind = unique ? 'oneToOne' : 'foreignKey';
69
+ const constraint = constraintName(pairs[0], member, place, resolver);
70
+ const first = pairs[0];
71
+ if (first === undefined) {
72
+ return;
73
+ }
74
+ // A shared key: @MapsId makes the foreign key the primary key (or a part of the embedded id).
75
+ let columnName = first.columnName;
76
+ let isKey = member.isId;
77
+ if (sharesKey) {
78
+ const part = mapsId?.string('value');
79
+ const idMembers = model.members.filter((item) => item.isId);
80
+ const mapped = part === undefined || part === ''
81
+ ? idMembers[0]
82
+ : idMembers.find((item) => item.path[item.path.length - 1] === part);
83
+ if (mapped !== undefined) {
84
+ output.consumed.set(mapped.path.join('.'), name);
85
+ isKey = true;
86
+ if (mapsId === undefined) {
87
+ columnName = columnNameOf(mapped);
88
+ resolver.warn(`${place}: @PrimaryKeyJoinColumn shares the primary key, but Hibernate creates no foreign key constraint for it; it was read as a one-to-one primary key relation, so writers will add the constraint (@MapsId creates it in Hibernate, too).`);
89
+ }
90
+ }
91
+ else {
92
+ resolver.warn(`${place}: the shared key names "${part ?? ''}", which is not an id attribute of ${model.name}.`);
93
+ }
94
+ }
95
+ if (pairs.length > 1) {
96
+ compositeKey(model, member, pairs, targetModel, kind, nullable, onDelete, output, resolver);
97
+ return;
98
+ }
99
+ const referencedKey = resolver.keyOf(target);
100
+ const isPrimaryReference = referencedKey.length === 1 &&
101
+ referencedKey[0]?.columnName === first.target.columnName;
102
+ const relation = {
103
+ name,
104
+ kind,
105
+ targetModel: targetModel.name,
106
+ columnName,
107
+ isNullable: isKey ? false : nullable,
108
+ onDelete,
109
+ ...(isPrimaryReference ? {} : { toField: first.target.name }),
110
+ ...(isKey ? { isPrimaryKey: true } : {}),
111
+ ...(constraint === undefined ? {} : { constraintName: constraint }),
112
+ };
113
+ output.relations.push({ order, relation });
114
+ const mirror = scalarOnColumn(model, columnName);
115
+ if (mirror !== undefined) {
116
+ output.consumed.set(mirror, name);
117
+ }
118
+ }
119
+ /** The path of a scalar member of the model that maps the same column (a read-only copy of the key). */
120
+ function scalarOnColumn(model, columnName) {
121
+ const found = model.members.find((member) => member.kind === 'basic' &&
122
+ !member.isId &&
123
+ columnNameOf(member).toLowerCase() === columnName.toLowerCase());
124
+ return found?.path.join('.');
125
+ }
126
+ function compositeKey(model, member, pairs, target, kind, nullable, onDelete, output, resolver) {
127
+ const targetFields = resolver.fieldsOf(target);
128
+ const local = [];
129
+ for (const pair of pairs) {
130
+ const existing = model.members.find((item) => item.kind === 'basic' &&
131
+ columnNameOf(item).toLowerCase() === pair.columnName.toLowerCase());
132
+ if (existing !== undefined) {
133
+ local.push(irFieldName(existing));
134
+ output.consumed.delete(existing.path.join('.'));
135
+ continue;
136
+ }
137
+ const referenced = targetFields.find((item) => item.field.name === pair.target.name);
138
+ const name = toCamelCase(pair.columnName);
139
+ output.extraFields.push({
140
+ name,
141
+ columnName: pair.columnName,
142
+ type: referenced?.field.type ?? 'unsupported',
143
+ isPrimaryKey: false,
144
+ isUnique: false,
145
+ isNullable: nullable,
146
+ isAutoUpdated: false,
147
+ ...(referenced?.field.maxLength === undefined
148
+ ? {}
149
+ : { maxLength: referenced.field.maxLength }),
150
+ ...(referenced?.field.maxDigits === undefined
151
+ ? {}
152
+ : { maxDigits: referenced.field.maxDigits }),
153
+ ...(referenced?.field.decimalPlaces === undefined
154
+ ? {}
155
+ : { decimalPlaces: referenced.field.decimalPlaces }),
156
+ });
157
+ local.push(name);
158
+ }
159
+ output.composite.push({
160
+ name: irFieldName(member),
161
+ targetModel: target.name,
162
+ fields: local,
163
+ references: pairs.map((pair) => pair.target.name),
164
+ kind,
165
+ isNullable: nullable,
166
+ onDelete,
167
+ });
168
+ }
169
+ function oneToMany(model, member, target, order, output, resolver, place) {
170
+ const targetModel = modelOwner(target);
171
+ if (joinColumnsOf(member).length === 0) {
172
+ // Without a join column Hibernate stores the link in a join table, like a many-to-many with a unique target.
173
+ resolver.warn(`${place}: a unidirectional @OneToMany without @JoinColumn uses a join table; it was read as a many-to-many relation (that each ${target.name} belongs to one ${model.name} is not represented).`);
174
+ manyToMany(model, member, target, order, output, resolver, place);
175
+ return;
176
+ }
177
+ // @OneToMany with @JoinColumn: the foreign key is a column of the target's table.
178
+ const ownerKeys = resolver.keyOf(model);
179
+ const columns = joinColumnsOf(member);
180
+ const first = columns[0];
181
+ const key = ownerKeys[0];
182
+ if (first === undefined || key === undefined || columns.length > 1) {
183
+ resolver.warn(`${place}: a @OneToMany with several join columns (or an owner without a key) is not supported; the relationship was skipped.`);
184
+ return;
185
+ }
186
+ const given = first.string('name');
187
+ const columnName = given === undefined || given === ''
188
+ ? `${member.attr.name}_${key.columnName}`
189
+ : cleanIdentifier(given);
190
+ const name = decapitalize(model.name);
191
+ output.foreign.push({
192
+ model: targetModel,
193
+ relation: {
194
+ name,
195
+ kind: 'foreignKey',
196
+ targetModel: modelOwner(model).name,
197
+ columnName,
198
+ isNullable: first.boolean('nullable') !== false,
199
+ onDelete: onDeleteOf(member, place, resolver),
200
+ relatedName: member.attr.name,
201
+ },
202
+ });
203
+ }
204
+ function manyToMany(model, member, target, order, output, resolver, place) {
205
+ const name = irFieldName(member);
206
+ const relation = {
207
+ name,
208
+ kind: 'manyToMany',
209
+ targetModel: modelOwner(target).name,
210
+ columnName: `${toSnakeCase(name)}_id`,
211
+ isNullable: false,
212
+ onDelete: 'cascade',
213
+ };
214
+ output.relations.push({ order, relation });
215
+ joinTableNote(model, member, target, relation, resolver, place);
216
+ }
217
+ /** Warns when the join table or its columns differ from the names the other formats will derive. */
218
+ function joinTableNote(model, member, target, relation, resolver, place) {
219
+ const join = member.attr.notes.get('JoinTable');
220
+ const ownerKey = resolver.keyOf(model)[0];
221
+ const targetKey = resolver.keyOf(target)[0];
222
+ const ownerTable = tableNameOf(modelOwner(model));
223
+ const targetTable = tableNameOf(modelOwner(target));
224
+ const actualTable = join?.string('name') || `${ownerTable}_${targetTable}`;
225
+ const left = join?.annotations('joinColumns')[0];
226
+ const right = join?.annotations('inverseJoinColumns')[0];
227
+ const actualLeft = left?.string('name') ||
228
+ `${model.entityName}_${ownerKey?.columnName ?? 'id'}`;
229
+ const actualRight = right?.string('name') ||
230
+ `${member.attr.name}_${targetKey?.columnName ?? 'id'}`;
231
+ const isSelf = model.name === target.name;
232
+ const expectedTable = `${ownerTable}_${relation.name}`;
233
+ const expectedLeft = `${isSelf ? 'from_' : ''}${toSnakeCase(model.name)}_id`;
234
+ const expectedRight = `${isSelf ? 'to_' : ''}${toSnakeCase(target.name)}_id`;
235
+ if (actualTable !== expectedTable ||
236
+ actualLeft !== expectedLeft ||
237
+ actualRight !== expectedRight) {
238
+ resolver.warn(`${place}: the join table "${actualTable}" (columns ${actualLeft}, ${actualRight}) is not preserved by name; ` +
239
+ `formats that derive join tables will use "${expectedTable}" (columns ${expectedLeft}, ${expectedRight}).`);
240
+ }
241
+ }
242
+ //# sourceMappingURL=jpaRelations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jpaRelations.js","sourceRoot":"","sources":["../../src/parsers/jpaRelations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { IrOnDelete } from '../ir.js';
2
+ import type { JavaType } from './javaSyntax.js';
3
+ import type { ColumnShape } from './efcoreTypes.js';
4
+ export declare function isPrimitive(type: JavaType): boolean;
5
+ /** True for the integer types an identity or sequence key can have. */
6
+ export declare function isIntegerType(type: JavaType): boolean;
7
+ export declare function isCollectionType(type: JavaType): boolean;
8
+ export declare function isMapType(type: JavaType): boolean;
9
+ /** The element type of a collection or array, or undefined for other types. */
10
+ export declare function elementOf(type: JavaType): JavaType | undefined;
11
+ /**
12
+ * The column a Java type maps to by default, or undefined when JPA has no default for it (a class of your own,
13
+ * `Object`, a `Map`). `imports` tells `java.sql.Date` from `java.util.Date`.
14
+ */
15
+ export declare function javaColumn(type: JavaType, imports: readonly string[]): ColumnShape | undefined;
16
+ /** The column type `@Temporal` selects. */
17
+ export declare function temporalColumn(kind: string): ColumnShape | undefined;
18
+ /** The IR type for a `SqlTypes.*` constant of `@JdbcTypeCode`; undefined when it is not one the model knows. */
19
+ export declare function jdbcTypeColumn(name: string): ColumnShape | undefined;
20
+ /** Maps a Hibernate `OnDeleteAction` constant to the referential action. */
21
+ export declare function onDeleteAction(name: string): IrOnDelete | undefined;
22
+ /** Lower-cases the first letter: `Post` is `post`, `URL` stays `URL`. */
23
+ export declare function decapitalize(name: string): string;
@@ -0,0 +1,232 @@
1
+ /** Java types that are not objects: their columns are NOT NULL. */
2
+ const PRIMITIVES = new Set([
3
+ 'int',
4
+ 'long',
5
+ 'short',
6
+ 'byte',
7
+ 'boolean',
8
+ 'float',
9
+ 'double',
10
+ 'char',
11
+ ]);
12
+ export function isPrimitive(type) {
13
+ return type.arrayDepth === 0 && PRIMITIVES.has(type.name);
14
+ }
15
+ const INTEGER_TYPES = new Set([
16
+ 'int',
17
+ 'Integer',
18
+ 'short',
19
+ 'Short',
20
+ 'byte',
21
+ 'Byte',
22
+ 'long',
23
+ 'Long',
24
+ ]);
25
+ /** True for the integer types an identity or sequence key can have. */
26
+ export function isIntegerType(type) {
27
+ return type.arrayDepth === 0 && INTEGER_TYPES.has(type.name);
28
+ }
29
+ const COLLECTIONS = new Set([
30
+ 'List',
31
+ 'Set',
32
+ 'Collection',
33
+ 'SortedSet',
34
+ 'NavigableSet',
35
+ 'ArrayList',
36
+ 'LinkedList',
37
+ 'HashSet',
38
+ 'LinkedHashSet',
39
+ 'TreeSet',
40
+ 'Iterable',
41
+ ]);
42
+ export function isCollectionType(type) {
43
+ return type.arrayDepth === 0 && COLLECTIONS.has(type.name);
44
+ }
45
+ export function isMapType(type) {
46
+ return (type.arrayDepth === 0 &&
47
+ /^(Map|HashMap|LinkedHashMap|TreeMap|SortedMap|SortedMap)$/.test(type.name));
48
+ }
49
+ /** The element type of a collection or array, or undefined for other types. */
50
+ export function elementOf(type) {
51
+ if (type.arrayDepth > 0) {
52
+ return { ...type, arrayDepth: type.arrayDepth - 1 };
53
+ }
54
+ return isCollectionType(type) ? type.args[0] : undefined;
55
+ }
56
+ const SIMPLE_SHAPES = {
57
+ String: { type: 'string', maxLength: 255 },
58
+ char: { type: 'string', maxLength: 1 },
59
+ Character: { type: 'string', maxLength: 1 },
60
+ int: { type: 'int' },
61
+ Integer: { type: 'int' },
62
+ short: { type: 'int' },
63
+ Short: { type: 'int' },
64
+ byte: { type: 'int' },
65
+ Byte: { type: 'int' },
66
+ long: { type: 'bigInt' },
67
+ Long: { type: 'bigInt' },
68
+ BigInteger: { type: 'decimal', maxDigits: 38, decimalPlaces: 0 },
69
+ BigDecimal: { type: 'decimal', maxDigits: 38, decimalPlaces: 2 },
70
+ float: { type: 'float' },
71
+ Float: { type: 'float' },
72
+ double: { type: 'float' },
73
+ Double: { type: 'float' },
74
+ boolean: { type: 'boolean' },
75
+ Boolean: { type: 'boolean' },
76
+ LocalDate: { type: 'date' },
77
+ LocalTime: { type: 'time' },
78
+ OffsetTime: { type: 'time' },
79
+ LocalDateTime: { type: 'dateTime' },
80
+ OffsetDateTime: { type: 'dateTime' },
81
+ ZonedDateTime: { type: 'dateTime' },
82
+ Instant: { type: 'dateTime' },
83
+ Timestamp: { type: 'dateTime' },
84
+ Calendar: { type: 'dateTime' },
85
+ GregorianCalendar: { type: 'dateTime' },
86
+ Duration: { type: 'duration' },
87
+ UUID: { type: 'uuid' },
88
+ Blob: { type: 'bytes' },
89
+ Clob: { type: 'text' },
90
+ NClob: { type: 'text' },
91
+ Locale: { type: 'string', maxLength: 255 },
92
+ Currency: { type: 'string', maxLength: 255 },
93
+ TimeZone: { type: 'string', maxLength: 255 },
94
+ ZoneId: { type: 'string', maxLength: 255 },
95
+ URL: { type: 'string', maxLength: 255 },
96
+ Class: { type: 'string', maxLength: 255 },
97
+ InetAddress: { type: 'ipAddress' },
98
+ JsonNode: { type: 'json' },
99
+ ObjectNode: { type: 'json' },
100
+ ArrayNode: { type: 'json' },
101
+ JsonObject: { type: 'json' },
102
+ };
103
+ /**
104
+ * The column a Java type maps to by default, or undefined when JPA has no default for it (a class of your own,
105
+ * `Object`, a `Map`). `imports` tells `java.sql.Date` from `java.util.Date`.
106
+ */
107
+ export function javaColumn(type, imports) {
108
+ if (type.arrayDepth === 1 && /^(byte|Byte)$/.test(type.name)) {
109
+ return { type: 'bytes' };
110
+ }
111
+ if (type.arrayDepth === 1 && type.name === 'char') {
112
+ return { type: 'string', maxLength: 255 };
113
+ }
114
+ if (type.arrayDepth > 0) {
115
+ const inner = javaColumn({ ...type, arrayDepth: 0 }, imports);
116
+ return inner === undefined
117
+ ? undefined
118
+ : { ...inner, arrayDepth: type.arrayDepth };
119
+ }
120
+ if (type.name === 'Date') {
121
+ return imports.includes('java.sql.Date') || type.text === 'java.sql.Date'
122
+ ? { type: 'date' }
123
+ : { type: 'dateTime' };
124
+ }
125
+ if (type.name === 'Time') {
126
+ return { type: 'time' };
127
+ }
128
+ const shape = SIMPLE_SHAPES[type.name];
129
+ if (shape !== undefined) {
130
+ return shape;
131
+ }
132
+ if (isCollectionType(type) && type.args.length === 1) {
133
+ const inner = type.args[0];
134
+ const column = inner === undefined ? undefined : javaColumn(inner, imports);
135
+ return column === undefined || column.arrayDepth !== undefined
136
+ ? undefined
137
+ : { ...column, arrayDepth: 1 };
138
+ }
139
+ return undefined;
140
+ }
141
+ /** The column type `@Temporal` selects. */
142
+ export function temporalColumn(kind) {
143
+ switch (kind) {
144
+ case 'DATE':
145
+ return { type: 'date' };
146
+ case 'TIME':
147
+ return { type: 'time' };
148
+ case 'TIMESTAMP':
149
+ return { type: 'dateTime' };
150
+ default:
151
+ return undefined;
152
+ }
153
+ }
154
+ /** The IR type for a `SqlTypes.*` constant of `@JdbcTypeCode`; undefined when it is not one the model knows. */
155
+ export function jdbcTypeColumn(name) {
156
+ switch (name) {
157
+ case 'JSON':
158
+ case 'JSON_ARRAY':
159
+ return { type: 'json' };
160
+ case 'UUID':
161
+ return { type: 'uuid' };
162
+ case 'BLOB':
163
+ case 'BINARY':
164
+ case 'VARBINARY':
165
+ case 'LONGVARBINARY':
166
+ case 'LONG32VARBINARY':
167
+ return { type: 'bytes' };
168
+ case 'CLOB':
169
+ case 'NCLOB':
170
+ case 'LONGVARCHAR':
171
+ case 'LONGNVARCHAR':
172
+ case 'LONG32VARCHAR':
173
+ case 'LONG32NVARCHAR':
174
+ return { type: 'text' };
175
+ case 'VARCHAR':
176
+ case 'NVARCHAR':
177
+ case 'CHAR':
178
+ case 'NCHAR':
179
+ return { type: 'string', maxLength: 255 };
180
+ case 'INTEGER':
181
+ case 'SMALLINT':
182
+ case 'TINYINT':
183
+ return { type: 'int' };
184
+ case 'BIGINT':
185
+ return { type: 'bigInt' };
186
+ case 'BOOLEAN':
187
+ case 'BIT':
188
+ return { type: 'boolean' };
189
+ case 'DECIMAL':
190
+ case 'NUMERIC':
191
+ return { type: 'decimal', maxDigits: 38, decimalPlaces: 2 };
192
+ case 'FLOAT':
193
+ case 'REAL':
194
+ case 'DOUBLE':
195
+ return { type: 'float' };
196
+ case 'DATE':
197
+ return { type: 'date' };
198
+ case 'TIME':
199
+ return { type: 'time' };
200
+ case 'TIMESTAMP':
201
+ case 'TIMESTAMP_WITH_TIMEZONE':
202
+ case 'TIMESTAMP_UTC':
203
+ return { type: 'dateTime' };
204
+ case 'INTERVAL_SECOND':
205
+ return { type: 'duration' };
206
+ case 'INET':
207
+ return { type: 'ipAddress' };
208
+ default:
209
+ return undefined;
210
+ }
211
+ }
212
+ const ON_DELETE = {
213
+ CASCADE: 'cascade',
214
+ SET_NULL: 'setNull',
215
+ SET_DEFAULT: 'setDefault',
216
+ RESTRICT: 'restrict',
217
+ NO_ACTION: 'noAction',
218
+ };
219
+ /** Maps a Hibernate `OnDeleteAction` constant to the referential action. */
220
+ export function onDeleteAction(name) {
221
+ return ON_DELETE[name];
222
+ }
223
+ /** Lower-cases the first letter: `Post` is `post`, `URL` stays `URL`. */
224
+ export function decapitalize(name) {
225
+ if (name.length > 1 && name[0] === name[0]?.toUpperCase()) {
226
+ if (name[1] === name[1]?.toUpperCase() && /[A-Za-z]/.test(name[1] ?? '')) {
227
+ return name;
228
+ }
229
+ }
230
+ return name.charAt(0).toLowerCase() + name.slice(1);
231
+ }
232
+ //# sourceMappingURL=jpaTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jpaTypes.js","sourceRoot":"","sources":["../../src/parsers/jpaTypes.ts"],"names":[],"mappings":"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"}
@@ -892,7 +892,15 @@ function buildScalarField(model, field, enumNames, enums, provider, warnings) {
892
892
  const parsedDefault = parseDefault(location, defaultAttribute, field.isList, isEnum
893
893
  ? enums.find((candidate) => candidate.name === field.typeName)
894
894
  : undefined, warnings);
895
- if (parsedDefault !== undefined) {
895
+ if (provider === 'cockroachdb' &&
896
+ parsedDefault?.kind === 'dbExpression' &&
897
+ parsedDefault.isFunction === true &&
898
+ /^sequence\(\s*\)$/.test(parsedDefault.expression) &&
899
+ (type === 'int' || type === 'bigInt')) {
900
+ // On CockroachDB, sequence() is the auto-increment of an Int (autoincrement() is BigInt only).
901
+ irField.default = { kind: 'autoIncrement' };
902
+ }
903
+ else if (parsedDefault !== undefined) {
896
904
  irField.default = parsedDefault;
897
905
  }
898
906
  }