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":"jpaColumns.js","sourceRoot":"","sources":["../../src/emitters/jpaColumns.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { IrField } from '../ir.js';
|
|
2
|
+
import type { EnumPlan } from './jpaTypes.js';
|
|
3
|
+
import type { PrismaProvider } from './prisma.js';
|
|
4
|
+
/** Turns the default of an IR field into what Hibernate can say: `@ColumnDefault` SQL or a generator. */
|
|
5
|
+
/** PostgreSQL and the databases that speak its types (MongoDB is written like PostgreSQL, with a warning). */
|
|
6
|
+
export declare function isPostgres(provider: PrismaProvider): boolean;
|
|
7
|
+
export interface DefaultSpec {
|
|
8
|
+
/** The text of `@ColumnDefault`. */
|
|
9
|
+
sql?: string;
|
|
10
|
+
/** True when the value is a UUID the application generates (`@UuidGenerator` or the id generator). */
|
|
11
|
+
uuid?: boolean;
|
|
12
|
+
/** True for a date-time "now" default, which `@CreationTimestamp` fills in. */
|
|
13
|
+
creationTimestamp?: boolean;
|
|
14
|
+
/** A Java expression with the same value, for the field initializer (so a new object already shows the default). */
|
|
15
|
+
initializer?: string;
|
|
16
|
+
/** The classes the initializer needs imported. */
|
|
17
|
+
initializerImports?: string[];
|
|
18
|
+
}
|
|
19
|
+
export interface DefaultContext {
|
|
20
|
+
provider: PrismaProvider;
|
|
21
|
+
warn: (message: string) => void;
|
|
22
|
+
}
|
|
23
|
+
/** Works out the default of a field; `isKey` is true for the single column of a primary key. */
|
|
24
|
+
export declare function defaultOf(context: DefaultContext, label: string, field: IrField, enumPlan: EnumPlan | undefined): DefaultSpec;
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { javaString, sqlString } from './jpaNames.js';
|
|
2
|
+
/** Turns the default of an IR field into what Hibernate can say: `@ColumnDefault` SQL or a generator. */
|
|
3
|
+
/** PostgreSQL and the databases that speak its types (MongoDB is written like PostgreSQL, with a warning). */
|
|
4
|
+
export function isPostgres(provider) {
|
|
5
|
+
return (provider === 'postgresql' ||
|
|
6
|
+
provider === 'cockroachdb' ||
|
|
7
|
+
provider === 'mongodb');
|
|
8
|
+
}
|
|
9
|
+
/** SQLite and MySQL accept an expression as a default only in parentheses: `DEFAULT (uuid())`. */
|
|
10
|
+
const PLAIN_DEFAULT = /^(current_(timestamp|date|time)(\(\d*\))?|localtimestamp|now\(\)|null|true|false|-?\d+(\.\d+)?|'(?:[^']|'')*')$/i;
|
|
11
|
+
function wrapExpression(provider, expression) {
|
|
12
|
+
const trimmed = expression.trim();
|
|
13
|
+
const needsParentheses = (provider === 'sqlite' || provider === 'mysql') &&
|
|
14
|
+
!PLAIN_DEFAULT.test(trimmed) &&
|
|
15
|
+
!/^\(.*\)$/s.test(trimmed);
|
|
16
|
+
return needsParentheses ? `(${trimmed})` : trimmed;
|
|
17
|
+
}
|
|
18
|
+
/** The SQL that stands for "now" in a column type. */
|
|
19
|
+
function nowSql(provider, type) {
|
|
20
|
+
if (provider === 'sqlserver' && type === 'dateTime') {
|
|
21
|
+
return 'GETUTCDATE()';
|
|
22
|
+
}
|
|
23
|
+
if (type === 'date') {
|
|
24
|
+
return provider === 'mysql' ? '(CURRENT_DATE)' : 'CURRENT_DATE';
|
|
25
|
+
}
|
|
26
|
+
if (type === 'time') {
|
|
27
|
+
return provider === 'mysql' ? '(CURRENT_TIME)' : 'CURRENT_TIME';
|
|
28
|
+
}
|
|
29
|
+
return 'CURRENT_TIMESTAMP';
|
|
30
|
+
}
|
|
31
|
+
/** The enum member a default value names, by member name or by stored value. */
|
|
32
|
+
function enumMember(plan, raw) {
|
|
33
|
+
return (plan.enumeration.values.find((value) => value.name === raw) ??
|
|
34
|
+
plan.enumeration.values.find((value) => value.dbValue === raw));
|
|
35
|
+
}
|
|
36
|
+
/** The stored value of an enum member as SQL: a number in a numeric column, quoted text otherwise. */
|
|
37
|
+
function enumSql(field, member) {
|
|
38
|
+
return (field.type === 'int' || field.type === 'bigInt') &&
|
|
39
|
+
/^-?\d+$/.test(member.dbValue)
|
|
40
|
+
? member.dbValue
|
|
41
|
+
: sqlString(member.dbValue);
|
|
42
|
+
}
|
|
43
|
+
function enumConstant(plan, member) {
|
|
44
|
+
return `${plan.typeName}.${plan.members.get(member.name) ?? member.name}`;
|
|
45
|
+
}
|
|
46
|
+
/** The Java literal of a number for a column type, or undefined when it does not fit. */
|
|
47
|
+
function numberInitializer(field, value) {
|
|
48
|
+
if (!Number.isFinite(value)) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
switch (field.type) {
|
|
52
|
+
case 'int':
|
|
53
|
+
return Number.isInteger(value) ? String(value) : undefined;
|
|
54
|
+
case 'bigInt':
|
|
55
|
+
return Number.isInteger(value) ? `${value}L` : undefined;
|
|
56
|
+
case 'float': {
|
|
57
|
+
const text = String(value);
|
|
58
|
+
return /^-?\d+$/.test(text) ? `${text}.0` : text;
|
|
59
|
+
}
|
|
60
|
+
case 'decimal': {
|
|
61
|
+
const text = numberSql(value);
|
|
62
|
+
return text === undefined
|
|
63
|
+
? undefined
|
|
64
|
+
: `new BigDecimal(${javaString(text)})`;
|
|
65
|
+
}
|
|
66
|
+
default:
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function numberSql(value) {
|
|
71
|
+
if (!Number.isFinite(value)) {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
return /e/i.test(String(value))
|
|
75
|
+
? value.toFixed(20).replace(/\.?0+$/, '')
|
|
76
|
+
: String(value);
|
|
77
|
+
}
|
|
78
|
+
function booleanSql(provider, value) {
|
|
79
|
+
return provider === 'mysql' ||
|
|
80
|
+
provider === 'sqlite' ||
|
|
81
|
+
provider === 'sqlserver'
|
|
82
|
+
? value
|
|
83
|
+
? '1'
|
|
84
|
+
: '0'
|
|
85
|
+
: String(value);
|
|
86
|
+
}
|
|
87
|
+
function literalSql(context, label, field, value, enumPlan) {
|
|
88
|
+
const drop = (reason) => {
|
|
89
|
+
context.warn(`${label}: ${reason}; the default was dropped.`);
|
|
90
|
+
return {};
|
|
91
|
+
};
|
|
92
|
+
const asText = String(value);
|
|
93
|
+
if (enumPlan !== undefined) {
|
|
94
|
+
const found = enumMember(enumPlan, asText);
|
|
95
|
+
if (found === undefined) {
|
|
96
|
+
return drop(`the enum default "${asText}" matches no member`);
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
sql: enumSql(field, found),
|
|
100
|
+
initializer: enumConstant(enumPlan, found),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
if (field.arrayDepth !== undefined) {
|
|
104
|
+
return drop('an array default cannot be written');
|
|
105
|
+
}
|
|
106
|
+
switch (field.type) {
|
|
107
|
+
case 'boolean': {
|
|
108
|
+
const truth = typeof value === 'boolean'
|
|
109
|
+
? value
|
|
110
|
+
: /^(1|true)$/i.test(asText)
|
|
111
|
+
? true
|
|
112
|
+
: /^(0|false)$/i.test(asText)
|
|
113
|
+
? false
|
|
114
|
+
: undefined;
|
|
115
|
+
if (truth !== undefined) {
|
|
116
|
+
return {
|
|
117
|
+
sql: booleanSql(context.provider, truth),
|
|
118
|
+
initializer: String(truth),
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
return drop(`"${asText}" is not a boolean`);
|
|
122
|
+
}
|
|
123
|
+
case 'int':
|
|
124
|
+
case 'bigInt':
|
|
125
|
+
case 'float':
|
|
126
|
+
case 'decimal': {
|
|
127
|
+
const numeric = typeof value === 'number' ? value : Number(value);
|
|
128
|
+
const number = numberSql(numeric);
|
|
129
|
+
const initializer = numberInitializer(field, numeric);
|
|
130
|
+
return number === undefined
|
|
131
|
+
? drop(`"${asText}" is not a number this column can hold`)
|
|
132
|
+
: {
|
|
133
|
+
sql: number,
|
|
134
|
+
...(initializer === undefined ? {} : { initializer }),
|
|
135
|
+
...(field.type === 'decimal'
|
|
136
|
+
? { initializerImports: ['java.math.BigDecimal'] }
|
|
137
|
+
: {}),
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
case 'json':
|
|
141
|
+
case 'text':
|
|
142
|
+
// MySQL does not accept a plain literal as the default of a TEXT or JSON column; an expression does.
|
|
143
|
+
return {
|
|
144
|
+
sql: context.provider === 'mysql'
|
|
145
|
+
? `(${sqlString(asText)})`
|
|
146
|
+
: sqlString(asText),
|
|
147
|
+
...(field.type === 'text' ? { initializer: javaString(asText) } : {}),
|
|
148
|
+
};
|
|
149
|
+
case 'string':
|
|
150
|
+
return { sql: sqlString(asText), initializer: javaString(asText) };
|
|
151
|
+
case 'uuid':
|
|
152
|
+
return {
|
|
153
|
+
sql: sqlString(asText),
|
|
154
|
+
...(/^[0-9a-f-]{36}$/i.test(asText)
|
|
155
|
+
? {
|
|
156
|
+
initializer: `UUID.fromString(${javaString(asText)})`,
|
|
157
|
+
initializerImports: ['java.util.UUID'],
|
|
158
|
+
}
|
|
159
|
+
: {}),
|
|
160
|
+
};
|
|
161
|
+
case 'date':
|
|
162
|
+
case 'time':
|
|
163
|
+
case 'dateTime':
|
|
164
|
+
case 'duration':
|
|
165
|
+
case 'ipAddress':
|
|
166
|
+
return { sql: sqlString(asText) };
|
|
167
|
+
default:
|
|
168
|
+
return drop(`a literal default on a ${field.type} column cannot be written`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/** Works out the default of a field; `isKey` is true for the single column of a primary key. */
|
|
172
|
+
export function defaultOf(context, label, field, enumPlan) {
|
|
173
|
+
const value = field.default;
|
|
174
|
+
if (value === undefined) {
|
|
175
|
+
return {};
|
|
176
|
+
}
|
|
177
|
+
switch (value.kind) {
|
|
178
|
+
case 'autoIncrement':
|
|
179
|
+
return {};
|
|
180
|
+
case 'now':
|
|
181
|
+
if (field.type !== 'dateTime' &&
|
|
182
|
+
field.type !== 'date' &&
|
|
183
|
+
field.type !== 'time') {
|
|
184
|
+
context.warn(`${label}: the "now" default applies to date and time columns only; the default was dropped.`);
|
|
185
|
+
return {};
|
|
186
|
+
}
|
|
187
|
+
return {
|
|
188
|
+
sql: nowSql(context.provider, field.type),
|
|
189
|
+
...(field.type === 'dateTime' ? { creationTimestamp: true } : {}),
|
|
190
|
+
};
|
|
191
|
+
case 'uuid':
|
|
192
|
+
if (field.type !== 'uuid') {
|
|
193
|
+
context.warn(`${label}: a UUID default on a ${field.type} column cannot be written; the default was dropped.`);
|
|
194
|
+
return {};
|
|
195
|
+
}
|
|
196
|
+
return { uuid: true };
|
|
197
|
+
case 'enumValue': {
|
|
198
|
+
const found = enumPlan === undefined ? undefined : enumMember(enumPlan, value.value);
|
|
199
|
+
if (enumPlan === undefined || found === undefined) {
|
|
200
|
+
context.warn(`${label}: the enum default "${value.value}" matches no enum member; the default was dropped.`);
|
|
201
|
+
return {};
|
|
202
|
+
}
|
|
203
|
+
return {
|
|
204
|
+
sql: enumSql(field, found),
|
|
205
|
+
initializer: enumConstant(enumPlan, found),
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
case 'literal':
|
|
209
|
+
return literalSql(context, label, field, value.value, enumPlan);
|
|
210
|
+
case 'dbExpression':
|
|
211
|
+
if (value.isFunction === true) {
|
|
212
|
+
context.warn(`${label}: the Prisma function ${value.expression} is not a database expression; the default was dropped.`);
|
|
213
|
+
return {};
|
|
214
|
+
}
|
|
215
|
+
return { sql: wrapExpression(context.provider, value.expression) };
|
|
216
|
+
case 'clientGenerated':
|
|
217
|
+
context.warn(`${label}: the ${value.generator}() default is generated by Prisma Client; JPA has no equivalent and the default was dropped.`);
|
|
218
|
+
return {};
|
|
219
|
+
default:
|
|
220
|
+
return {};
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=jpaDefaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jpaDefaults.js","sourceRoot":"","sources":["../../src/emitters/jpaDefaults.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAItD,yGAAyG;AAEzG,8GAA8G;AAC9G,MAAM,UAAU,UAAU,CAAC,QAAwB;IACjD,OAAO,CACL,QAAQ,KAAK,YAAY;QACzB,QAAQ,KAAK,aAAa;QAC1B,QAAQ,KAAK,SAAS,CACvB,CAAC;AACJ,CAAC;AAeD,kGAAkG;AAClG,MAAM,aAAa,GACjB,kHAAkH,CAAC;AAErH,SAAS,cAAc,CAAC,QAAwB,EAAE,UAAkB;IAClE,MAAM,OAAO,GAAW,UAAU,CAAC,IAAI,EAAE,CAAC;IAC1C,MAAM,gBAAgB,GACpB,CAAC,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,OAAO,CAAC;QAC/C,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;QAC5B,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,OAAO,gBAAgB,CAAC,CAAC,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;AACrD,CAAC;AAED,sDAAsD;AACtD,SAAS,MAAM,CAAC,QAAwB,EAAE,IAAkB;IAC1D,IAAI,QAAQ,KAAK,WAAW,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACpD,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC;IAClE,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC;IAClE,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,gFAAgF;AAChF,SAAS,UAAU,CAAC,IAAc,EAAE,GAAW;IAC7C,OAAO,CACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAkB,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QACxE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAkB,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,GAAG,CAAC,CAC5E,CAAC;AACJ,CAAC;AAED,sGAAsG;AACtG,SAAS,OAAO,CAAC,KAAc,EAAE,MAAmB;IAClD,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;QACtD,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAC9B,CAAC,CAAC,MAAM,CAAC,OAAO;QAChB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,YAAY,CAAC,IAAc,EAAE,MAAmB;IACvD,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;AAC5E,CAAC;AAED,yFAAyF;AACzF,SAAS,iBAAiB,CAAC,KAAc,EAAE,KAAa;IACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,KAAK;YACR,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7D,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3D,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,IAAI,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC;YACnC,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,IAAI,GAAuB,SAAS,CAAC,KAAK,CAAC,CAAC;YAClD,OAAO,IAAI,KAAK,SAAS;gBACvB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,kBAAkB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;QAC5C,CAAC;QACD;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;QACzC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,UAAU,CAAC,QAAwB,EAAE,KAAc;IAC1D,OAAO,QAAQ,KAAK,OAAO;QACzB,QAAQ,KAAK,QAAQ;QACrB,QAAQ,KAAK,WAAW;QACxB,CAAC,CAAC,KAAK;YACL,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,GAAG;QACP,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpB,CAAC;AAOD,SAAS,UAAU,CACjB,OAAuB,EACvB,KAAa,EACb,KAAc,EACd,KAAgC,EAChC,QAA8B;IAE9B,MAAM,IAAI,GAAG,CAAC,MAAc,EAAe,EAAE;QAC3C,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,MAAM,4BAA4B,CAAC,CAAC;QAC9D,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IACF,MAAM,MAAM,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,KAAK,GAA4B,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,qBAAqB,MAAM,qBAAqB,CAAC,CAAC;QAChE,CAAC;QACD,OAAO;YACL,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;YAC1B,WAAW,EAAE,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC;SAC3C,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACpD,CAAC;IACD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,KAAK,GACT,OAAO,KAAK,KAAK,SAAS;gBACxB,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;oBAC1B,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;wBAC3B,CAAC,CAAC,KAAK;wBACP,CAAC,CAAC,SAAS,CAAC;YACpB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO;oBACL,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC;oBACxC,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC;iBAC3B,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC,IAAI,MAAM,oBAAoB,CAAC,CAAC;QAC9C,CAAC;QACD,KAAK,KAAK,CAAC;QACX,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,OAAO,GAAW,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1E,MAAM,MAAM,GAAuB,SAAS,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,WAAW,GAAuB,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC1E,OAAO,MAAM,KAAK,SAAS;gBACzB,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,wCAAwC,CAAC;gBAC1D,CAAC,CAAC;oBACE,GAAG,EAAE,MAAM;oBACX,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;oBACrD,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS;wBAC1B,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,sBAAsB,CAAC,EAAE;wBAClD,CAAC,CAAC,EAAE,CAAC;iBACR,CAAC;QACR,CAAC;QACD,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM;YACT,qGAAqG;YACrG,OAAO;gBACL,GAAG,EACD,OAAO,CAAC,QAAQ,KAAK,OAAO;oBAC1B,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,GAAG;oBAC1B,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;gBACvB,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtE,CAAC;QACJ,KAAK,QAAQ;YACX,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACrE,KAAK,MAAM;YACT,OAAO;gBACL,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC;gBACtB,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;oBACjC,CAAC,CAAC;wBACE,WAAW,EAAE,mBAAmB,UAAU,CAAC,MAAM,CAAC,GAAG;wBACrD,kBAAkB,EAAE,CAAC,gBAAgB,CAAC;qBACvC;oBACH,CAAC,CAAC,EAAE,CAAC;aACR,CAAC;QACJ,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU,CAAC;QAChB,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW;YACd,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC;YACE,OAAO,IAAI,CACT,0BAA0B,KAAK,CAAC,IAAI,2BAA2B,CAChE,CAAC;IACN,CAAC;AACH,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,SAAS,CACvB,OAAuB,EACvB,KAAa,EACb,KAAc,EACd,QAA8B;IAE9B,MAAM,KAAK,GAA0B,KAAK,CAAC,OAAO,CAAC;IACnD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,eAAe;YAClB,OAAO,EAAE,CAAC;QACZ,KAAK,KAAK;YACR,IACE,KAAK,CAAC,IAAI,KAAK,UAAU;gBACzB,KAAK,CAAC,IAAI,KAAK,MAAM;gBACrB,KAAK,CAAC,IAAI,KAAK,MAAM,EACrB,CAAC;gBACD,OAAO,CAAC,IAAI,CACV,GAAG,KAAK,qFAAqF,CAC9F,CAAC;gBACF,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO;gBACL,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC;gBACzC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClE,CAAC;QACJ,KAAK,MAAM;YACT,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAI,CACV,GAAG,KAAK,yBAAyB,KAAK,CAAC,IAAI,qDAAqD,CACjG,CAAC;gBACF,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACxB,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,KAAK,GACT,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YACzE,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBAClD,OAAO,CAAC,IAAI,CACV,GAAG,KAAK,uBAAuB,KAAK,CAAC,KAAK,oDAAoD,CAC/F,CAAC;gBACF,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO;gBACL,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;gBAC1B,WAAW,EAAE,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC;aAC3C,CAAC;QACJ,CAAC;QACD,KAAK,SAAS;YACZ,OAAO,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAClE,KAAK,cAAc;YACjB,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gBAC9B,OAAO,CAAC,IAAI,CACV,GAAG,KAAK,yBAAyB,KAAK,CAAC,UAAU,yDAAyD,CAC3G,CAAC;gBACF,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO,EAAE,GAAG,EAAE,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACrE,KAAK,iBAAiB;YACpB,OAAO,CAAC,IAAI,CACV,GAAG,KAAK,SAAS,KAAK,CAAC,SAAS,8FAA8F,CAC/H,CAAC;YACF,OAAO,EAAE,CAAC;QACZ;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { IrSchema } from '../ir.js';
|
|
2
|
+
import { Imports, type EnumPlan, type JpaStyle } from './jpaTypes.js';
|
|
3
|
+
/** Plans every enum of the schema; `typeNames` holds the class names taken so far and receives the new ones. */
|
|
4
|
+
export declare function planEnums(schema: IrSchema, typeNames: Set<string>, warn: (message: string) => void): Map<string, EnumPlan>;
|
|
5
|
+
/** The text of a Java enum file (without the header and package, which the caller writes). */
|
|
6
|
+
export declare function renderEnumBody(plan: EnumPlan): string[];
|
|
7
|
+
/** The body of the converter file of an enum whose stored values differ from the constant names. */
|
|
8
|
+
export declare function renderConverterBody(plan: EnumPlan, style: JpaStyle): {
|
|
9
|
+
imports: Imports;
|
|
10
|
+
lines: string[];
|
|
11
|
+
};
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { formatAnnotation, annotation } from './jpaFormat.js';
|
|
2
|
+
import { classNameOf, javaString, repairedIdentifier, RESERVED_TYPE_NAMES, uniqueName, } from './jpaNames.js';
|
|
3
|
+
import { Imports } from './jpaTypes.js';
|
|
4
|
+
/** Plans and writes the Java enums of the IR enums, and the converters of those whose stored values differ. */
|
|
5
|
+
/** True when a column stores numbers (an enum in it is an ordinal or a converted integer). */
|
|
6
|
+
function isNumericColumn(field) {
|
|
7
|
+
return ((field.type === 'int' || field.type === 'bigInt') &&
|
|
8
|
+
field.arrayDepth === undefined);
|
|
9
|
+
}
|
|
10
|
+
/** Plans every enum of the schema; `typeNames` holds the class names taken so far and receives the new ones. */
|
|
11
|
+
export function planEnums(schema, typeNames, warn) {
|
|
12
|
+
const columns = new Map();
|
|
13
|
+
for (const model of schema.models) {
|
|
14
|
+
for (const field of model.fields) {
|
|
15
|
+
if (field.enumName !== undefined) {
|
|
16
|
+
columns.set(field.enumName, [
|
|
17
|
+
...(columns.get(field.enumName) ?? []),
|
|
18
|
+
field,
|
|
19
|
+
]);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const plans = new Map();
|
|
24
|
+
for (const enumeration of schema.enums) {
|
|
25
|
+
const raw = classNameOf(enumeration.name);
|
|
26
|
+
const typeName = uniqueName(RESERVED_TYPE_NAMES.has(raw) ? `${raw}Enum` : raw, typeNames);
|
|
27
|
+
if (typeName !== raw) {
|
|
28
|
+
warn(`enum ${enumeration.name}: "${raw}" is a name the generated code uses or another type has, so the enum was named "${typeName}".`);
|
|
29
|
+
}
|
|
30
|
+
const used = new Set();
|
|
31
|
+
const members = new Map();
|
|
32
|
+
for (const value of enumeration.values) {
|
|
33
|
+
const name = uniqueName(repairedIdentifier(value.name), used);
|
|
34
|
+
if (name !== value.name) {
|
|
35
|
+
warn(`enum ${enumeration.name}: the member "${value.name}" was written as "${name}".`);
|
|
36
|
+
}
|
|
37
|
+
members.set(value.name, name);
|
|
38
|
+
}
|
|
39
|
+
const users = columns.get(enumeration.name) ?? [];
|
|
40
|
+
const numeric = users.length > 0 &&
|
|
41
|
+
users.every(isNumericColumn) &&
|
|
42
|
+
enumeration.values.every((value) => /^-?\d+$/.test(value.dbValue));
|
|
43
|
+
const namesMatch = enumeration.values.every((value) => members.get(value.name) === value.dbValue);
|
|
44
|
+
const isOrdinal = numeric &&
|
|
45
|
+
enumeration.values.every((value, index) => value.dbValue === String(index));
|
|
46
|
+
let storage = 'converter';
|
|
47
|
+
if (users.length === 0 || (!numeric && namesMatch)) {
|
|
48
|
+
storage = 'names';
|
|
49
|
+
}
|
|
50
|
+
else if (isOrdinal) {
|
|
51
|
+
storage = 'ordinal';
|
|
52
|
+
}
|
|
53
|
+
plans.set(enumeration.name, {
|
|
54
|
+
enumeration,
|
|
55
|
+
typeName,
|
|
56
|
+
members,
|
|
57
|
+
storage,
|
|
58
|
+
numeric,
|
|
59
|
+
converterName: storage === 'converter'
|
|
60
|
+
? uniqueName(`${typeName}Converter`, typeNames)
|
|
61
|
+
: '',
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
return plans;
|
|
65
|
+
}
|
|
66
|
+
function constantLines(plan) {
|
|
67
|
+
const values = plan.enumeration.values;
|
|
68
|
+
if (plan.storage !== 'converter') {
|
|
69
|
+
return values.map((value, index) => ` ${plan.members.get(value.name) ?? value.name}${index === values.length - 1 ? '' : ','}`);
|
|
70
|
+
}
|
|
71
|
+
return values.map((value, index) => {
|
|
72
|
+
const stored = plan.numeric
|
|
73
|
+
? value.dbValue
|
|
74
|
+
: javaString(value.dbValue);
|
|
75
|
+
return ` ${plan.members.get(value.name) ?? value.name}(${stored})${index === values.length - 1 ? ';' : ','}`;
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
/** The text of a Java enum file (without the header and package, which the caller writes). */
|
|
79
|
+
export function renderEnumBody(plan) {
|
|
80
|
+
const lines = [`public enum ${plan.typeName} {`];
|
|
81
|
+
if (plan.storage !== 'converter') {
|
|
82
|
+
lines.push(...constantLines(plan));
|
|
83
|
+
if (plan.enumeration.values.length > 0) {
|
|
84
|
+
lines.push('}');
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
lines.splice(1, 0, ' ;');
|
|
88
|
+
lines.push('}');
|
|
89
|
+
}
|
|
90
|
+
return lines;
|
|
91
|
+
}
|
|
92
|
+
const type = plan.numeric ? 'int' : 'String';
|
|
93
|
+
lines.push(...constantLines(plan));
|
|
94
|
+
if (plan.enumeration.values.length === 0) {
|
|
95
|
+
lines.push(' ;');
|
|
96
|
+
}
|
|
97
|
+
lines.push('', ` private final ${type} value;`, '', ` ${plan.typeName}(${type} value) {`, ' this.value = value;', ' }', '', ` public ${type} getValue() {`, ' return value;', ' }', '}');
|
|
98
|
+
return lines;
|
|
99
|
+
}
|
|
100
|
+
/** The body of the converter file of an enum whose stored values differ from the constant names. */
|
|
101
|
+
export function renderConverterBody(plan, style) {
|
|
102
|
+
const imports = new Imports(style);
|
|
103
|
+
const converter = imports.persistence('Converter');
|
|
104
|
+
const base = imports.persistence('AttributeConverter');
|
|
105
|
+
const stored = plan.numeric ? 'Integer' : 'String';
|
|
106
|
+
const type = plan.typeName;
|
|
107
|
+
const compare = plan.numeric
|
|
108
|
+
? 'item.getValue() == dbData'
|
|
109
|
+
: 'item.getValue().equals(dbData)';
|
|
110
|
+
const lines = [
|
|
111
|
+
...formatAnnotation(annotation(converter), 0),
|
|
112
|
+
`public class ${plan.converterName} implements ${base}<${type}, ${stored}> {`,
|
|
113
|
+
' @Override',
|
|
114
|
+
` public ${stored} convertToDatabaseColumn(${type} attribute) {`,
|
|
115
|
+
' return attribute == null ? null : attribute.getValue();',
|
|
116
|
+
' }',
|
|
117
|
+
'',
|
|
118
|
+
' @Override',
|
|
119
|
+
` public ${type} convertToEntityAttribute(${stored} dbData) {`,
|
|
120
|
+
' if (dbData == null) {',
|
|
121
|
+
' return null;',
|
|
122
|
+
' }',
|
|
123
|
+
` for (${type} item : ${type}.values()) {`,
|
|
124
|
+
` if (${compare}) {`,
|
|
125
|
+
' return item;',
|
|
126
|
+
' }',
|
|
127
|
+
' }',
|
|
128
|
+
` throw new IllegalArgumentException("Unknown ${type} value: " + dbData);`,
|
|
129
|
+
' }',
|
|
130
|
+
'}',
|
|
131
|
+
];
|
|
132
|
+
return { imports, lines };
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=jpaEnums.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jpaEnums.js","sourceRoot":"","sources":["../../src/emitters/jpaEnums.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A small model of Java annotations and a printer that lays them out the way google-java-format does: on one line
|
|
3
|
+
* when they fit, otherwise one argument per line (indented by 4), with arrays of nested annotations one item per
|
|
4
|
+
* line (indented by 2 inside the braces).
|
|
5
|
+
*/
|
|
6
|
+
export type AnnotationValue = string | AnnotationNode | AnnotationValue[];
|
|
7
|
+
export interface AnnotationNode {
|
|
8
|
+
/** The simple name, without the `@`. */
|
|
9
|
+
name: string;
|
|
10
|
+
/** Arguments as `[name, value]`; a name of `undefined` is the single `value` argument (`@Id`, `@Lob`). */
|
|
11
|
+
args: [string | undefined, AnnotationValue][];
|
|
12
|
+
}
|
|
13
|
+
/** Builds an annotation node. */
|
|
14
|
+
export declare function annotation(name: string, args?: [string | undefined, AnnotationValue][]): AnnotationNode;
|
|
15
|
+
/** The lines of one annotation placed at `indent` spaces. */
|
|
16
|
+
export declare function formatAnnotation(node: AnnotationNode, indent: number): string[];
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A small model of Java annotations and a printer that lays them out the way google-java-format does: on one line
|
|
3
|
+
* when they fit, otherwise one argument per line (indented by 4), with arrays of nested annotations one item per
|
|
4
|
+
* line (indented by 2 inside the braces).
|
|
5
|
+
*/
|
|
6
|
+
const LINE_LIMIT = 100;
|
|
7
|
+
/** Builds an annotation node. */
|
|
8
|
+
export function annotation(name, args = []) {
|
|
9
|
+
return { name, args };
|
|
10
|
+
}
|
|
11
|
+
function isNode(value) {
|
|
12
|
+
return typeof value === 'object' && !Array.isArray(value);
|
|
13
|
+
}
|
|
14
|
+
function inline(value) {
|
|
15
|
+
if (typeof value === 'string') {
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
if (Array.isArray(value)) {
|
|
19
|
+
const items = value.map(inline);
|
|
20
|
+
return items.length === 1 ? (items[0] ?? '') : `{${items.join(', ')}}`;
|
|
21
|
+
}
|
|
22
|
+
if (value.args.length === 0) {
|
|
23
|
+
return `@${value.name}`;
|
|
24
|
+
}
|
|
25
|
+
const args = value.args.map(([key, item]) => key === undefined ? inline(item) : `${key} = ${inline(item)}`);
|
|
26
|
+
return `@${value.name}(${args.join(', ')})`;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Lays out `lead + value + tail` starting at `indent` spaces: `lead` is what precedes the value on its first line
|
|
30
|
+
* (`indexes = `) and `tail` what follows it on its last (`,` or `)`).
|
|
31
|
+
*/
|
|
32
|
+
function layout(value, indent, lead, tail) {
|
|
33
|
+
const pad = ' '.repeat(indent);
|
|
34
|
+
const single = `${pad}${lead}${inline(value)}${tail}`;
|
|
35
|
+
const forceBreak = Array.isArray(value) && value.length > 1 && value.some(isNode);
|
|
36
|
+
if (typeof value === 'string' ||
|
|
37
|
+
(single.length <= LINE_LIMIT && !forceBreak)) {
|
|
38
|
+
return [single];
|
|
39
|
+
}
|
|
40
|
+
if (Array.isArray(value)) {
|
|
41
|
+
if (value.length === 1 && value[0] !== undefined) {
|
|
42
|
+
return layout(value[0], indent, lead, tail);
|
|
43
|
+
}
|
|
44
|
+
const lines = [`${pad}${lead}{`];
|
|
45
|
+
value.forEach((item, position) => {
|
|
46
|
+
lines.push(...layout(item, indent + 2, '', position === value.length - 1 ? '' : ','));
|
|
47
|
+
});
|
|
48
|
+
lines.push(`${pad}}${tail}`);
|
|
49
|
+
return lines;
|
|
50
|
+
}
|
|
51
|
+
const only = value.args.length === 1 ? value.args[0] : undefined;
|
|
52
|
+
if (only?.[0] === undefined && Array.isArray(only?.[1])) {
|
|
53
|
+
// A lone array argument hugs the parentheses: @JoinColumns({ ... })
|
|
54
|
+
const items = only?.[1] ?? [];
|
|
55
|
+
const lines = [`${pad}${lead}@${value.name}({`];
|
|
56
|
+
items.forEach((item, position) => {
|
|
57
|
+
lines.push(...layout(item, indent + 2, '', position === items.length - 1 ? '' : ','));
|
|
58
|
+
});
|
|
59
|
+
lines.push(`${pad}})${tail}`);
|
|
60
|
+
return lines;
|
|
61
|
+
}
|
|
62
|
+
const lines = [`${pad}${lead}@${value.name}(`];
|
|
63
|
+
value.args.forEach(([key, item], position) => {
|
|
64
|
+
const last = position === value.args.length - 1;
|
|
65
|
+
lines.push(...layout(item, indent + 4, key === undefined ? '' : `${key} = `, last ? `)${tail}` : ','));
|
|
66
|
+
});
|
|
67
|
+
return lines;
|
|
68
|
+
}
|
|
69
|
+
/** The lines of one annotation placed at `indent` spaces. */
|
|
70
|
+
export function formatAnnotation(node, indent) {
|
|
71
|
+
return layout(node, indent, '', '');
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=jpaFormat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jpaFormat.js","sourceRoot":"","sources":["../../src/emitters/jpaFormat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { IrField, IrModel, IrRelation } from '../ir.js';
|
|
2
|
+
import { Imports, type IdPart, type JpaStyle } from './jpaTypes.js';
|
|
3
|
+
/** Finds the primary key of a model and writes the `@IdClass` class of a composite one. */
|
|
4
|
+
export type KeyPart = {
|
|
5
|
+
kind: 'field';
|
|
6
|
+
field: IrField;
|
|
7
|
+
} | {
|
|
8
|
+
kind: 'relation';
|
|
9
|
+
relation: IrRelation;
|
|
10
|
+
};
|
|
11
|
+
export interface KeyInfo {
|
|
12
|
+
/** The columns of the primary key, in key order. */
|
|
13
|
+
parts: KeyPart[];
|
|
14
|
+
/** True when the model has no key and one column was chosen to be the identifier. */
|
|
15
|
+
synthesized: boolean;
|
|
16
|
+
}
|
|
17
|
+
/** The column to use as the identifier of a model that has no key: the first required column of a sensible type. */
|
|
18
|
+
export declare function identifierCandidate(model: IrModel): IrField | undefined;
|
|
19
|
+
/** The primary key of a model; `warn` is told about names it cannot resolve and about a missing key. */
|
|
20
|
+
export declare function keyOf(model: IrModel, warn: (message: string) => void): KeyInfo;
|
|
21
|
+
/** The text of an `@IdClass` file body: fields, constructors, `equals` and `hashCode`. */
|
|
22
|
+
export declare function renderIdClass(name: string, parts: readonly IdPart[], style: JpaStyle): {
|
|
23
|
+
imports: Imports;
|
|
24
|
+
lines: string[];
|
|
25
|
+
};
|