@an5/orm 1.2.0 → 1.3.1
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 +1 -1
- package/dist/generator/src/api.d.ts +3 -0
- package/dist/generator/src/api.js +7 -1
- package/dist/generator/src/code-generator.js +12 -1
- package/dist/generator/src/code-request.d.ts +2 -2
- package/dist/generator/src/code-request.js +24 -3
- package/dist/generator/src/config.d.ts +18 -0
- package/dist/generator/src/config.js +24 -0
- package/dist/generator/src/dialect.js +4 -2
- package/dist/generator/src/dotnet-generator.js +97 -1
- package/dist/generator/src/field-types.js +3 -0
- package/dist/generator/src/golang-generator.d.ts +8 -0
- package/dist/generator/src/golang-generator.js +183 -9
- package/dist/generator/src/index.js +18 -0
- package/dist/generator/src/java-generator.d.ts +56 -0
- package/dist/generator/src/java-generator.js +1408 -0
- package/dist/generator/src/kotlin-generator.d.ts +34 -0
- package/dist/generator/src/kotlin-generator.js +753 -0
- package/dist/generator/src/python-generator.js +4 -2
- package/dist/generator/src/rust-generator.js +36 -1
- package/dist/generator/src/swift-generator.d.ts +42 -0
- package/dist/generator/src/swift-generator.js +768 -0
- package/generator/src/api.ts +3 -0
- package/generator/src/code-generator.ts +13 -1
- package/generator/src/code-request.ts +17 -3
- package/generator/src/config.ts +48 -0
- package/generator/src/dialect.ts +5 -3
- package/generator/src/dotnet-generator.ts +97 -1
- package/generator/src/field-types.ts +3 -0
- package/generator/src/golang-generator.ts +184 -9
- package/generator/src/index.ts +21 -0
- package/generator/src/java-generator.ts +1459 -0
- package/generator/src/kotlin-generator.ts +798 -0
- package/generator/src/python-generator.ts +4 -2
- package/generator/src/rust-generator.ts +37 -1
- package/generator/src/swift-generator.ts +830 -0
- package/package.json +2 -2
|
@@ -13,6 +13,9 @@ const python_generator_1 = require("./python-generator");
|
|
|
13
13
|
const dotnet_generator_1 = require("./dotnet-generator");
|
|
14
14
|
const golang_generator_1 = require("./golang-generator");
|
|
15
15
|
const rust_generator_1 = require("./rust-generator");
|
|
16
|
+
const java_generator_1 = require("./java-generator");
|
|
17
|
+
const kotlin_generator_1 = require("./kotlin-generator");
|
|
18
|
+
const swift_generator_1 = require("./swift-generator");
|
|
16
19
|
const fs_1 = __importDefault(require("fs"));
|
|
17
20
|
function clearGeneratedFiles(outputDir, extension) {
|
|
18
21
|
if (!fs_1.default.existsSync(outputDir)) {
|
|
@@ -70,6 +73,9 @@ async function main() {
|
|
|
70
73
|
const outputDotnetDir = config.outputs.dotnetDir;
|
|
71
74
|
const outputGolangDir = config.outputs.golangDir;
|
|
72
75
|
const outputRustDir = config.outputs.rustDir;
|
|
76
|
+
const outputJavaDir = config.outputs.javaDir;
|
|
77
|
+
const outputKotlinDir = config.outputs.kotlinDir;
|
|
78
|
+
const outputSwiftDir = config.outputs.swiftDir;
|
|
73
79
|
const generateMetadata = config.config.generation.generateMetadata;
|
|
74
80
|
console.log('🚀 Starting ORM generation...');
|
|
75
81
|
// The target provider comes from the connection string: both the allowed
|
|
@@ -81,6 +87,9 @@ async function main() {
|
|
|
81
87
|
clearGeneratedFiles(outputDotnetDir, '.cs');
|
|
82
88
|
clearGeneratedFiles(outputGolangDir, '.go');
|
|
83
89
|
clearGeneratedFiles(path_1.default.join(outputRustDir, 'src'), '.rs');
|
|
90
|
+
clearGeneratedFiles(outputJavaDir, '.java');
|
|
91
|
+
clearGeneratedFiles(outputKotlinDir, '.kt');
|
|
92
|
+
clearGeneratedFiles(path_1.default.join(outputSwiftDir, 'Sources'), '.swift');
|
|
84
93
|
const pythonDirEarly = path_1.default.dirname(outputPythonMetadataPath);
|
|
85
94
|
clearGeneratedPythonFiles(pythonDirEarly);
|
|
86
95
|
if (config.config.generation.generateMetadata && fs_1.default.existsSync(outputMetadataPath)) {
|
|
@@ -120,6 +129,15 @@ async function main() {
|
|
|
120
129
|
const rustGen = new rust_generator_1.RustGenerator(outputRustDir);
|
|
121
130
|
rustGen.generate(models);
|
|
122
131
|
console.log(`✨ Generated Rust client in ${outputRustDir}`);
|
|
132
|
+
const javaGen = new java_generator_1.JavaGenerator(outputJavaDir);
|
|
133
|
+
javaGen.generate(models);
|
|
134
|
+
console.log(`✨ Generated Java client in ${outputJavaDir}`);
|
|
135
|
+
const kotlinGen = new kotlin_generator_1.KotlinGenerator(outputKotlinDir);
|
|
136
|
+
kotlinGen.generate(models);
|
|
137
|
+
console.log(`✨ Generated Kotlin client in ${outputKotlinDir}`);
|
|
138
|
+
const swiftGen = new swift_generator_1.SwiftGenerator(outputSwiftDir);
|
|
139
|
+
swiftGen.generate(models);
|
|
140
|
+
console.log(`✨ Generated Swift client in ${outputSwiftDir}`);
|
|
123
141
|
console.log('✅ ORM generation completed successfully.');
|
|
124
142
|
}
|
|
125
143
|
catch (error) {
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Model } from './types';
|
|
2
|
+
export declare class JavaGenerator {
|
|
3
|
+
private outputDir;
|
|
4
|
+
/** The database being generated for; decides types like `TIMESTAMP`. */
|
|
5
|
+
private provider;
|
|
6
|
+
constructor(outputDir: string);
|
|
7
|
+
generate(models: Model[]): void;
|
|
8
|
+
private capitalize;
|
|
9
|
+
/**
|
|
10
|
+
* The Java field name for a schema column.
|
|
11
|
+
*
|
|
12
|
+
* A field named `class`, `new` or `from` would not compile as an identifier, so those are
|
|
13
|
+
* suffixed rather than left to fail at the call site.
|
|
14
|
+
*/
|
|
15
|
+
private fieldName;
|
|
16
|
+
private getterName;
|
|
17
|
+
private static toCamelCase;
|
|
18
|
+
private static toLowerCamelCase;
|
|
19
|
+
/**
|
|
20
|
+
* Every spelling of a model name the client registers it under.
|
|
21
|
+
*
|
|
22
|
+
* The metadata is keyed in camelCase while the model class is PascalCase, and the adapter
|
|
23
|
+
* resolves the difference; these are the names the context exposes so either spelling
|
|
24
|
+
* works at the call site.
|
|
25
|
+
*/
|
|
26
|
+
private propertyNames;
|
|
27
|
+
/**
|
|
28
|
+
* The Java type for a column.
|
|
29
|
+
*
|
|
30
|
+
* Driven by the declared type, so a `DECIMAL` column is a `BigDecimal` and not an `int`:
|
|
31
|
+
* both arrive from the parser as `number`, which is how the earlier clients turned
|
|
32
|
+
* decimal money into integers.
|
|
33
|
+
*/
|
|
34
|
+
private mapType;
|
|
35
|
+
/**
|
|
36
|
+
* The boxed form used in a model.
|
|
37
|
+
*
|
|
38
|
+
* Every field is boxed, primitives included: `toValues` skips the columns left null, and a
|
|
39
|
+
* column the schema does not mark optional can still read NULL until a row is written. A
|
|
40
|
+
* primitive cannot represent "unset", so the skip would have to give the column a default
|
|
41
|
+
* and quietly write it.
|
|
42
|
+
*/
|
|
43
|
+
private mapNullableType;
|
|
44
|
+
private getFilterType;
|
|
45
|
+
private generateModels;
|
|
46
|
+
private modelSource;
|
|
47
|
+
/** The expression that reads one column into its field. */
|
|
48
|
+
private readExpression;
|
|
49
|
+
private generateValues;
|
|
50
|
+
private generateOrmTypes;
|
|
51
|
+
private generateMetadata;
|
|
52
|
+
private generateConfig;
|
|
53
|
+
private modelClientSource;
|
|
54
|
+
private generateDbContext;
|
|
55
|
+
private tableName;
|
|
56
|
+
}
|