@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.
Files changed (37) hide show
  1. package/README.md +1 -1
  2. package/dist/generator/src/api.d.ts +3 -0
  3. package/dist/generator/src/api.js +7 -1
  4. package/dist/generator/src/code-generator.js +12 -1
  5. package/dist/generator/src/code-request.d.ts +2 -2
  6. package/dist/generator/src/code-request.js +24 -3
  7. package/dist/generator/src/config.d.ts +18 -0
  8. package/dist/generator/src/config.js +24 -0
  9. package/dist/generator/src/dialect.js +4 -2
  10. package/dist/generator/src/dotnet-generator.js +97 -1
  11. package/dist/generator/src/field-types.js +3 -0
  12. package/dist/generator/src/golang-generator.d.ts +8 -0
  13. package/dist/generator/src/golang-generator.js +183 -9
  14. package/dist/generator/src/index.js +18 -0
  15. package/dist/generator/src/java-generator.d.ts +56 -0
  16. package/dist/generator/src/java-generator.js +1408 -0
  17. package/dist/generator/src/kotlin-generator.d.ts +34 -0
  18. package/dist/generator/src/kotlin-generator.js +753 -0
  19. package/dist/generator/src/python-generator.js +4 -2
  20. package/dist/generator/src/rust-generator.js +36 -1
  21. package/dist/generator/src/swift-generator.d.ts +42 -0
  22. package/dist/generator/src/swift-generator.js +768 -0
  23. package/generator/src/api.ts +3 -0
  24. package/generator/src/code-generator.ts +13 -1
  25. package/generator/src/code-request.ts +17 -3
  26. package/generator/src/config.ts +48 -0
  27. package/generator/src/dialect.ts +5 -3
  28. package/generator/src/dotnet-generator.ts +97 -1
  29. package/generator/src/field-types.ts +3 -0
  30. package/generator/src/golang-generator.ts +184 -9
  31. package/generator/src/index.ts +21 -0
  32. package/generator/src/java-generator.ts +1459 -0
  33. package/generator/src/kotlin-generator.ts +798 -0
  34. package/generator/src/python-generator.ts +4 -2
  35. package/generator/src/rust-generator.ts +37 -1
  36. package/generator/src/swift-generator.ts +830 -0
  37. 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
+ }