ormbridge 0.12.1 → 0.14.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 (84) hide show
  1. package/README.md +19 -4
  2. package/dist/cliRunner.js +19 -1
  3. package/dist/cliRunner.js.map +1 -1
  4. package/dist/config.d.ts +5 -0
  5. package/dist/config.js +17 -0
  6. package/dist/config.js.map +1 -1
  7. package/dist/emitters/jpa.d.ts +17 -2
  8. package/dist/emitters/jpa.js +55 -7
  9. package/dist/emitters/jpa.js.map +1 -1
  10. package/dist/emitters/jpaKeyClass.d.ts +18 -0
  11. package/dist/emitters/jpaKeyClass.js +88 -0
  12. package/dist/emitters/jpaKeyClass.js.map +1 -0
  13. package/dist/emitters/jpaKeys.d.ts +1 -7
  14. package/dist/emitters/jpaKeys.js +0 -43
  15. package/dist/emitters/jpaKeys.js.map +1 -1
  16. package/dist/emitters/jpaRelations.d.ts +5 -1
  17. package/dist/emitters/jpaRelations.js +7 -1
  18. package/dist/emitters/jpaRelations.js.map +1 -1
  19. package/dist/emitters/jpaRender.d.ts +5 -1
  20. package/dist/emitters/jpaRender.js +11 -4
  21. package/dist/emitters/jpaRender.js.map +1 -1
  22. package/dist/emitters/jpaTypes.d.ts +9 -3
  23. package/dist/emitters/jpaTypes.js +8 -0
  24. package/dist/emitters/jpaTypes.js.map +1 -1
  25. package/dist/emitters/neo4jEdges.d.ts +46 -0
  26. package/dist/emitters/neo4jEdges.js +147 -0
  27. package/dist/emitters/neo4jEdges.js.map +1 -0
  28. package/dist/emitters/neo4jGraph.d.ts +9 -0
  29. package/dist/emitters/neo4jGraph.js +9 -5
  30. package/dist/emitters/neo4jGraph.js.map +1 -1
  31. package/dist/emitters/neo4jRelationships.d.ts +3 -1
  32. package/dist/emitters/neo4jRelationships.js +1 -1
  33. package/dist/emitters/neo4jRelationships.js.map +1 -1
  34. package/dist/emitters/neomodel.d.ts +20 -0
  35. package/dist/emitters/neomodel.js +415 -0
  36. package/dist/emitters/neomodel.js.map +1 -0
  37. package/dist/emitters/neomodelNames.d.ts +25 -0
  38. package/dist/emitters/neomodelNames.js +159 -0
  39. package/dist/emitters/neomodelNames.js.map +1 -0
  40. package/dist/emitters/neomodelProperties.d.ts +48 -0
  41. package/dist/emitters/neomodelProperties.js +220 -0
  42. package/dist/emitters/neomodelProperties.js.map +1 -0
  43. package/dist/emitters/sdn.d.ts +27 -0
  44. package/dist/emitters/sdn.js +584 -0
  45. package/dist/emitters/sdn.js.map +1 -0
  46. package/dist/emitters/sdnTypes.d.ts +7 -0
  47. package/dist/emitters/sdnTypes.js +81 -0
  48. package/dist/emitters/sdnTypes.js.map +1 -0
  49. package/dist/formats.d.ts +11 -0
  50. package/dist/formats.js +48 -3
  51. package/dist/formats.js.map +1 -1
  52. package/dist/index.d.ts +9 -2
  53. package/dist/index.js +5 -1
  54. package/dist/index.js.map +1 -1
  55. package/dist/io.js +62 -21
  56. package/dist/io.js.map +1 -1
  57. package/dist/parsers/jpaBuild.js +2 -1
  58. package/dist/parsers/jpaBuild.js.map +1 -1
  59. package/dist/parsers/jpaClasses.js +7 -1
  60. package/dist/parsers/jpaClasses.js.map +1 -1
  61. package/dist/parsers/jpaColumns.d.ts +4 -1
  62. package/dist/parsers/jpaColumns.js +8 -2
  63. package/dist/parsers/jpaColumns.js.map +1 -1
  64. package/dist/parsers/jpaEntities.js +15 -0
  65. package/dist/parsers/jpaEntities.js.map +1 -1
  66. package/dist/parsers/jpaModel.d.ts +6 -0
  67. package/dist/parsers/sqlDdl.js +1306 -65
  68. package/dist/parsers/sqlDdl.js.map +1 -1
  69. package/dist/parsers/sqlMigrationOrder.d.ts +8 -0
  70. package/dist/parsers/sqlMigrationOrder.js +110 -0
  71. package/dist/parsers/sqlMigrationOrder.js.map +1 -0
  72. package/dist/parsers/sqlSyntax.d.ts +6 -0
  73. package/dist/parsers/sqlSyntax.js +15 -2
  74. package/dist/parsers/sqlSyntax.js.map +1 -1
  75. package/dist/parsers/zod.d.ts +11 -0
  76. package/dist/parsers/zod.js +796 -0
  77. package/dist/parsers/zod.js.map +1 -0
  78. package/dist/parsers/zodFields.d.ts +73 -0
  79. package/dist/parsers/zodFields.js +681 -0
  80. package/dist/parsers/zodFields.js.map +1 -0
  81. package/dist/parsers/zodSyntax.d.ts +72 -0
  82. package/dist/parsers/zodSyntax.js +347 -0
  83. package/dist/parsers/zodSyntax.js.map +1 -0
  84. package/package.json +1 -1
@@ -1,6 +1,5 @@
1
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. */
2
+ /** Finds the primary key of a model. The key class of a composite one is written by `jpaKeyClass.ts`. */
4
3
  export type KeyPart = {
5
4
  kind: 'field';
6
5
  field: IrField;
@@ -18,8 +17,3 @@ export interface KeyInfo {
18
17
  export declare function identifierCandidate(model: IrModel): IrField | undefined;
19
18
  /** The primary key of a model; `warn` is told about names it cannot resolve and about a missing key. */
20
19
  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
- };
@@ -1,4 +1,3 @@
1
- import { Imports } from './jpaTypes.js';
2
1
  function findField(model, name) {
3
2
  return (model.fields.find((field) => field.name === name) ??
4
3
  model.fields.find((field) => field.columnName === name));
@@ -65,46 +64,4 @@ export function keyOf(model, warn) {
65
64
  warn(`${model.name}: ${model.isView === true ? 'a database view' : 'the table'} has no primary key, but a JPA entity needs an identifier; the column "${chosen.columnName}" was written as the @Id (Hibernate would create a primary key on it).`);
66
65
  return { parts: [{ kind: 'field', field: chosen }], synthesized: true };
67
66
  }
68
- /** The text of an `@IdClass` file body: fields, constructors, `equals` and `hashCode`. */
69
- export function renderIdClass(name, parts, style) {
70
- const imports = new Imports(style);
71
- imports.use('java.io.Serializable');
72
- imports.use('java.util.Objects');
73
- for (const part of parts) {
74
- imports.merge(part.imports);
75
- }
76
- const lines = [
77
- `public class ${name} implements Serializable {`,
78
- ' private static final long serialVersionUID = 1L;',
79
- '',
80
- ...parts.map((part) => ` private ${part.type} ${part.name};`),
81
- '',
82
- ` public ${name}() {}`,
83
- '',
84
- ` public ${name}(${parts.map((part) => `${part.type} ${part.name}`).join(', ')}) {`,
85
- ...parts.map((part) => ` this.${part.name} = ${part.name};`),
86
- ' }',
87
- '',
88
- ' @Override',
89
- ' public boolean equals(Object other) {',
90
- ' if (this == other) {',
91
- ' return true;',
92
- ' }',
93
- ` if (!(other instanceof ${name})) {`,
94
- ' return false;',
95
- ' }',
96
- ` ${name} that = (${name}) other;`,
97
- ` return ${parts
98
- .map((part) => `Objects.equals(${part.name}, that.${part.name})`)
99
- .join(' && ')};`,
100
- ' }',
101
- '',
102
- ' @Override',
103
- ' public int hashCode() {',
104
- ` return Objects.hash(${parts.map((part) => part.name).join(', ')});`,
105
- ' }',
106
- '}',
107
- ];
108
- return { imports, lines };
109
- }
110
67
  //# sourceMappingURL=jpaKeys.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jpaKeys.js","sourceRoot":"","sources":["../../src/emitters/jpaKeys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jpaKeys.js","sourceRoot":"","sources":["../../src/emitters/jpaKeys.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { IrField, IrModel, IrRelation, IrSchema } from '../ir.js';
2
2
  import type { KeyInfo } from './jpaKeys.js';
3
- import { Imports, type JpaStyle, type ModelPlan } from './jpaTypes.js';
3
+ import { Imports, type JpaKeyMode, type JpaStyle, type ModelPlan } from './jpaTypes.js';
4
4
  /** Writes the relations of the models: the owning side with its join columns, the inverse side and the join tables. */
5
5
  /** An inverse side to add to the target of a relation once every owning side is named. */
6
6
  export interface InverseLink {
@@ -13,6 +13,8 @@ export interface InverseLink {
13
13
  }
14
14
  export interface RelationContext {
15
15
  style: JpaStyle;
16
+ /** How a composite primary key is written; a relationship in one gets `@MapsId` instead of `@Id` when embedded. */
17
+ keyMode: JpaKeyMode;
16
18
  schema: IrSchema;
17
19
  plans: ReadonlyMap<string, ModelPlan>;
18
20
  keys: ReadonlyMap<string, KeyInfo>;
@@ -27,6 +29,8 @@ export interface RelationContext {
27
29
  /** A relation that is part of a primary key: its attribute name and the type of the key it points at. */
28
30
  export interface KeyRelation {
29
31
  attribute: string;
32
+ /** The foreign key column, which the `@Embeddable` key class repeats. */
33
+ column: string;
30
34
  type: string;
31
35
  imports: Imports;
32
36
  }
@@ -121,7 +121,12 @@ export function addOwningRelations(ctx, plan) {
121
121
  }
122
122
  const annotations = [];
123
123
  if (isKey) {
124
- annotations.push(annotation(imports.persistence('Id')));
124
+ // In an @EmbeddedId the key class holds the column; the relationship takes its value from it.
125
+ annotations.push(ctx.keyMode === 'embedded' && (info?.parts.length ?? 0) > 1
126
+ ? annotation(imports.persistence('MapsId'), [
127
+ [undefined, javaString(attributeName)],
128
+ ])
129
+ : annotation(imports.persistence('Id')));
125
130
  }
126
131
  annotations.push(annotation(imports.persistence(oneToOne ? 'OneToOne' : 'ManyToOne'), sideArguments(imports, !required, !isKey)), joinColumn(imports, relation.columnName, referenced, [
127
132
  ...(required ? [['nullable', 'false']] : []),
@@ -142,6 +147,7 @@ export function addOwningRelations(ctx, plan) {
142
147
  const keyType = ctx.keyTypes.get(target.name);
143
148
  keyRelations.set(relation, {
144
149
  attribute: attributeName,
150
+ column: relation.columnName,
145
151
  type: keyType?.type ?? 'Object',
146
152
  imports: keyType?.imports ?? imports,
147
153
  });
@@ -1 +1 @@
1
- {"version":3,"file":"jpaRelations.js","sourceRoot":"","sources":["../../src/emitters/jpaRelations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jpaRelations.js","sourceRoot":"","sources":["../../src/emitters/jpaRelations.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,14 @@
1
- import { Imports, type ModelPlan } from './jpaTypes.js';
1
+ import { Imports, type Attribute, type ModelPlan } from './jpaTypes.js';
2
2
  export interface FileLayout {
3
3
  packageName: string;
4
4
  /** Write the `// <auto-generated>` comment at the top of every file. */
5
5
  header: boolean;
6
+ /** Write Lombok annotations (`@Getter`, `@Setter`, ...) in place of hand-written accessors. */
7
+ lombok?: boolean;
6
8
  }
7
9
  /** Assembles a Java file: the header comment, the package, the sorted imports and the body. */
8
10
  export declare function renderFile(layout: FileLayout, imports: Imports, body: readonly string[]): string;
11
+ export declare function attributeLines(attribute: Attribute): string[];
12
+ export declare function accessorLines(attribute: Attribute): string[];
9
13
  /** The text of an entity class file. */
10
14
  export declare function renderEntity(plan: ModelPlan, layout: FileLayout): string;
@@ -28,7 +28,7 @@ function accessorNames(attribute) {
28
28
  }
29
29
  return { get: `get${capitalize(name)}`, set: `set${capitalize(name)}` };
30
30
  }
31
- function attributeLines(attribute) {
31
+ export function attributeLines(attribute) {
32
32
  const lines = [];
33
33
  for (const node of attribute.annotations) {
34
34
  lines.push(...formatAnnotation(node, INDENT.length));
@@ -36,7 +36,7 @@ function attributeLines(attribute) {
36
36
  lines.push(`${INDENT}private ${attribute.type} ${attribute.name}${attribute.initializer === undefined ? '' : ` = ${attribute.initializer}`};`);
37
37
  return lines;
38
38
  }
39
- function accessorLines(attribute) {
39
+ export function accessorLines(attribute) {
40
40
  const names = accessorNames(attribute);
41
41
  return [
42
42
  `${INDENT}public ${attribute.type} ${names.get}() {`,
@@ -59,6 +59,11 @@ export function renderEntity(plan, layout) {
59
59
  for (const node of plan.classAnnotations) {
60
60
  body.push(...formatAnnotation(node, 0));
61
61
  }
62
+ if (layout.lombok === true) {
63
+ for (const name of ['Getter', 'Setter', 'NoArgsConstructor']) {
64
+ body.push(`@${imports.use(`lombok.${name}`)}`);
65
+ }
66
+ }
62
67
  if (plan.serializable === true) {
63
68
  imports.use('java.io.Serializable');
64
69
  }
@@ -72,8 +77,10 @@ export function renderEntity(plan, layout) {
72
77
  }
73
78
  body.push(...attributeLines(attribute));
74
79
  });
75
- for (const attribute of plan.attributes) {
76
- body.push('', ...accessorLines(attribute));
80
+ if (layout.lombok !== true) {
81
+ for (const attribute of plan.attributes) {
82
+ body.push('', ...accessorLines(attribute));
83
+ }
77
84
  }
78
85
  body.push('}');
79
86
  return renderFile(layout, imports, body);
@@ -1 +1 @@
1
- {"version":3,"file":"jpaRender.js","sourceRoot":"","sources":["../../src/emitters/jpaRender.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jpaRender.js","sourceRoot":"","sources":["../../src/emitters/jpaRender.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,8 @@ export declare class Imports {
15
15
  hibernate(name: string): string;
16
16
  /** Adds every import of another set. */
17
17
  merge(other: Imports): void;
18
+ /** Drops the imports whose simple name the text never uses (the imports an attribute brought along). */
19
+ prune(text: string): void;
18
20
  /** The import lines in ASCII order; `java.lang` classes and the file's own package need none. */
19
21
  lines(): string[];
20
22
  }
@@ -46,13 +48,17 @@ export interface Attribute {
46
48
  /** Imports the type and the annotations need. */
47
49
  imports: Imports;
48
50
  }
49
- /** A component of a composite primary key and the type its `@IdClass` field has. */
51
+ /** How a composite primary key is written: an `@IdClass` class (default) or an `@Embeddable` class with `@EmbeddedId`. */
52
+ export type JpaKeyMode = 'idclass' | 'embedded';
53
+ /** A component of a composite primary key and the type its key class field has. */
50
54
  export interface IdPart {
51
- /** The attribute name in the entity (and in the id class). */
55
+ /** The attribute name in the entity (and in the key class). */
52
56
  name: string;
53
57
  /** The boxed Java type. */
54
58
  type: string;
55
59
  imports: Imports;
60
+ /** Annotations of the field in an `@Embeddable` key class (`@Column`, `@Enumerated`, ...). */
61
+ annotations?: AnnotationNode[];
56
62
  }
57
63
  /** What the generated class of a model is made of. */
58
64
  export interface ModelPlan {
@@ -66,7 +72,7 @@ export interface ModelPlan {
66
72
  attributes: Attribute[];
67
73
  classAnnotations: AnnotationNode[];
68
74
  imports: Imports;
69
- /** The `@IdClass` class, when the primary key has several columns. */
75
+ /** The `@IdClass` or `@Embeddable` key class, when the primary key has several columns. */
70
76
  idClass?: {
71
77
  name: string;
72
78
  parts: IdPart[];
@@ -25,6 +25,14 @@ export class Imports {
25
25
  this.names.set(simple, full);
26
26
  }
27
27
  }
28
+ /** Drops the imports whose simple name the text never uses (the imports an attribute brought along). */
29
+ prune(text) {
30
+ for (const simple of [...this.names.keys()]) {
31
+ if (!new RegExp(`\\b${simple}\\b`).test(text)) {
32
+ this.names.delete(simple);
33
+ }
34
+ }
35
+ }
28
36
  /** The import lines in ASCII order; `java.lang` classes and the file's own package need none. */
29
37
  lines() {
30
38
  return [...this.names.values()]
@@ -1 +1 @@
1
- {"version":3,"file":"jpaTypes.js","sourceRoot":"","sources":["../../src/emitters/jpaTypes.ts"],"names":[],"mappings":"AAMA,8DAA8D;AAC9D,MAAM,OAAO,OAAO;IAGW;IAFZ,KAAK,GAAwB,IAAI,GAAG,EAAkB,CAAC;IAExE,YAA6B,KAAe;QAAf,UAAK,GAAL,KAAK,CAAU;IAAG,CAAC;IAEhD,oEAAoE;IACpE,GAAG,CAAC,QAAgB;QAClB,MAAM,MAAM,GAAW,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACjC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,mGAAmG;IACnG,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,gBAAgB,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,8CAA8C;IAC9C,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,GAAG,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,wCAAwC;IACxC,KAAK,CAAC,KAAc;QAClB,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,iGAAiG;IACjG,KAAK;QACH,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;aAC5B,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC1D,IAAI,CAAC,CAAC,KAAa,EAAE,MAAc,EAAE,EAAE,CACtC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC7C;aACA,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;IAC9C,CAAC;CACF"}
1
+ {"version":3,"file":"jpaTypes.js","sourceRoot":"","sources":["../../src/emitters/jpaTypes.ts"],"names":[],"mappings":"AAMA,8DAA8D;AAC9D,MAAM,OAAO,OAAO;IAGW;IAFZ,KAAK,GAAwB,IAAI,GAAG,EAAkB,CAAC;IAExE,YAA6B,KAAe;QAAf,UAAK,GAAL,KAAK,CAAU;IAAG,CAAC;IAEhD,oEAAoE;IACpE,GAAG,CAAC,QAAgB;QAClB,MAAM,MAAM,GAAW,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACjC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,mGAAmG;IACnG,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,gBAAgB,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,8CAA8C;IAC9C,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,GAAG,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,wCAAwC;IACxC,KAAK,CAAC,KAAc;QAClB,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,wGAAwG;IACxG,KAAK,CAAC,IAAY;QAChB,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,iGAAiG;IACjG,KAAK;QACH,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;aAC5B,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC1D,IAAI,CAAC,CAAC,KAAa,EAAE,MAAc,EAAE,EAAE,CACtC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC7C;aACA,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;IAC9C,CAAC;CACF"}
@@ -0,0 +1,46 @@
1
+ import type { IrCompositeForeignKey, IrOnDelete, IrRelation, IrSchema } from '../ir.js';
2
+ import type { Graph, GraphJoin, GraphNode, GraphProperty } from './neo4jGraph.js';
3
+ /**
4
+ * The relationships of the graph model as data, for the writers that declare them (neomodel, Spring
5
+ * Data Neo4j). The Cypher writer documents the same relationships as comments, so the three agree on
6
+ * the relationship types, the direction and the cardinalities. One edge is one relationship type
7
+ * between two node labels: a foreign key, a one-to-one key, a composite foreign key, a many-to-many
8
+ * relation (written once, from the side that comes first) or a join table that became a relationship.
9
+ */
10
+ /** How many nodes one end of a relationship can reach through it. */
11
+ export type EdgeCardinality = 'one' | 'zeroOrOne' | 'zeroOrMore' | 'oneOrMore';
12
+ export interface GraphEdge {
13
+ kind: 'foreignKey' | 'oneToOne' | 'manyToMany' | 'join';
14
+ /** The relationship type, for example `AUTHOR`. */
15
+ type: string;
16
+ /** The node the relationship starts at: the one that owns the foreign key. */
17
+ source: GraphNode;
18
+ target: GraphNode;
19
+ /** The IR relation name on the source (the key name for a composite key; for a join, the forward name). */
20
+ name: string;
21
+ /** The name of the reverse accessor in the source (`related_name`), when the source has one. */
22
+ reverseName?: string;
23
+ /** How many targets one source node has. */
24
+ outgoing: EdgeCardinality;
25
+ /** How many source nodes one target node has. */
26
+ incoming: EdgeCardinality;
27
+ onDelete?: IrOnDelete;
28
+ /** The IR relation behind a foreign key, one-to-one key or many-to-many relation. */
29
+ relation?: IrRelation;
30
+ composite?: IrCompositeForeignKey;
31
+ /** The join table behind a `join` edge; its extra columns are `properties`. */
32
+ join?: GraphJoin;
33
+ /** Relationship properties (the extra columns of a join table). */
34
+ properties: GraphProperty[];
35
+ }
36
+ /**
37
+ * Lists the relationships in the order the Cypher writer documents them: per node in model order its
38
+ * foreign keys, one-to-one keys and many-to-many relations (a pair once), then its composite foreign
39
+ * keys; the join tables last. A relationship whose target model is missing is reported in `warnings`.
40
+ */
41
+ export declare function collectEdges(schema: IrSchema, graph: Graph, warnings: string[]): GraphEdge[];
42
+ /**
43
+ * The name of the reverse accessor when the source gave none: the plural of the source label in
44
+ * snake_case words (`Post` gives `posts`). A writer makes it unique among the names of the target.
45
+ */
46
+ export declare function defaultReverseName(edge: GraphEdge): string;
@@ -0,0 +1,147 @@
1
+ import { toSnakeCase } from '../naming.js';
2
+ import { relationshipTypeOf } from './neo4jNames.js';
3
+ import { isMirror } from './neo4jRelationships.js';
4
+ function nodeOf(graph, model) {
5
+ return graph.byModel.get(model);
6
+ }
7
+ function missingTarget(warnings, model, name, target) {
8
+ warnings.push(`${model.name}.${name}: the target model ${target} is not in the schema, so the relationship was not written.`);
9
+ }
10
+ function foreignKeyEdge(node, target, relation) {
11
+ return {
12
+ kind: relation.kind === 'oneToOne' ? 'oneToOne' : 'foreignKey',
13
+ type: relationshipTypeOf(relation.name),
14
+ source: node,
15
+ target,
16
+ name: relation.name,
17
+ ...(relation.relatedName === undefined
18
+ ? {}
19
+ : { reverseName: relation.relatedName }),
20
+ outgoing: relation.isNullable ? 'zeroOrOne' : 'one',
21
+ incoming: relation.kind === 'oneToOne' ? 'zeroOrOne' : 'zeroOrMore',
22
+ onDelete: relation.onDelete,
23
+ relation,
24
+ properties: [],
25
+ };
26
+ }
27
+ function compositeEdge(node, target, key) {
28
+ return {
29
+ kind: key.kind === 'oneToOne' ? 'oneToOne' : 'foreignKey',
30
+ type: relationshipTypeOf(key.name),
31
+ source: node,
32
+ target,
33
+ name: key.name,
34
+ outgoing: key.isNullable ? 'zeroOrOne' : 'one',
35
+ incoming: key.kind === 'oneToOne' ? 'zeroOrOne' : 'zeroOrMore',
36
+ onDelete: key.onDelete,
37
+ composite: key,
38
+ properties: [],
39
+ };
40
+ }
41
+ function manyToManyEdge(node, target, relation) {
42
+ const mirror = target.model.relations.find((other) => other !== relation &&
43
+ other.kind === 'manyToMany' &&
44
+ other.targetModel === node.model.name &&
45
+ (other.name === relation.relatedName ||
46
+ other.relatedName === relation.name));
47
+ const reverseName = relation.relatedName ?? mirror?.name;
48
+ return {
49
+ kind: 'manyToMany',
50
+ type: relationshipTypeOf(relation.name),
51
+ source: node,
52
+ target,
53
+ name: relation.name,
54
+ ...(reverseName === undefined ? {} : { reverseName }),
55
+ outgoing: 'zeroOrMore',
56
+ incoming: 'zeroOrMore',
57
+ relation,
58
+ properties: [],
59
+ };
60
+ }
61
+ function joinEdge(graph, join) {
62
+ const source = nodeOf(graph, join.from.targetModel);
63
+ const target = nodeOf(graph, join.to.targetModel);
64
+ if (source === undefined || target === undefined) {
65
+ return undefined;
66
+ }
67
+ return {
68
+ kind: 'join',
69
+ type: join.type,
70
+ source,
71
+ target,
72
+ name: join.from.relatedName ?? join.to.name,
73
+ ...(join.to.relatedName === undefined
74
+ ? {}
75
+ : { reverseName: join.to.relatedName }),
76
+ outgoing: 'zeroOrMore',
77
+ incoming: 'zeroOrMore',
78
+ join,
79
+ properties: join.extras,
80
+ };
81
+ }
82
+ /**
83
+ * Lists the relationships in the order the Cypher writer documents them: per node in model order its
84
+ * foreign keys, one-to-one keys and many-to-many relations (a pair once), then its composite foreign
85
+ * keys; the join tables last. A relationship whose target model is missing is reported in `warnings`.
86
+ */
87
+ export function collectEdges(schema, graph, warnings) {
88
+ const edges = [];
89
+ const written = new Set();
90
+ for (const node of graph.nodes) {
91
+ for (const relation of node.model.relations) {
92
+ const target = nodeOf(graph, relation.targetModel);
93
+ if (relation.kind === 'manyToMany') {
94
+ if (isMirror(schema, node.model, relation, written)) {
95
+ continue;
96
+ }
97
+ written.add(relation);
98
+ if (target === undefined) {
99
+ missingTarget(warnings, node.model, relation.name, relation.targetModel);
100
+ continue;
101
+ }
102
+ edges.push(manyToManyEdge(node, target, relation));
103
+ }
104
+ else if (target === undefined) {
105
+ missingTarget(warnings, node.model, relation.name, relation.targetModel);
106
+ }
107
+ else {
108
+ edges.push(foreignKeyEdge(node, target, relation));
109
+ }
110
+ }
111
+ for (const key of node.model.compositeForeignKeys ?? []) {
112
+ const target = nodeOf(graph, key.targetModel);
113
+ if (target === undefined) {
114
+ missingTarget(warnings, node.model, key.name, key.targetModel);
115
+ }
116
+ else {
117
+ edges.push(compositeEdge(node, target, key));
118
+ }
119
+ }
120
+ }
121
+ for (const join of graph.joins) {
122
+ const edge = joinEdge(graph, join);
123
+ if (edge !== undefined) {
124
+ edges.push(edge);
125
+ }
126
+ }
127
+ return edges;
128
+ }
129
+ /** The plural of a snake_case word. */
130
+ function pluralOf(snake) {
131
+ if (/[^aeiou]y$/.test(snake)) {
132
+ return `${snake.slice(0, -1)}ies`;
133
+ }
134
+ if (/(s|x|z|ch|sh)$/.test(snake)) {
135
+ return `${snake}es`;
136
+ }
137
+ return `${snake}s`;
138
+ }
139
+ /**
140
+ * The name of the reverse accessor when the source gave none: the plural of the source label in
141
+ * snake_case words (`Post` gives `posts`). A writer makes it unique among the names of the target.
142
+ */
143
+ export function defaultReverseName(edge) {
144
+ const words = toSnakeCase(edge.source.label);
145
+ return pluralOf(words === '' ? 'node' : words);
146
+ }
147
+ //# sourceMappingURL=neo4jEdges.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neo4jEdges.js","sourceRoot":"","sources":["../../src/emitters/neo4jEdges.ts"],"names":[],"mappings":"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"}
@@ -45,6 +45,15 @@ export interface Graph {
45
45
  }
46
46
  export interface GraphOptions {
47
47
  camelFields: boolean;
48
+ /**
49
+ * Warnings the Cypher writer gives that another writer represents itself and words differently:
50
+ * `defaults` (a default value has no schema representation), `autoIncrement` and `maxLength`.
51
+ */
52
+ omitWarnings?: {
53
+ defaults?: boolean;
54
+ autoIncrement?: boolean;
55
+ maxLength?: boolean;
56
+ };
48
57
  }
49
58
  /** IR names (fields and relations) that make up the primary key of a model. */
50
59
  export declare function primaryKeyNamesOf(model: IrModel): string[];
@@ -55,11 +55,12 @@ function fieldWarnings(context, model, field, mapping) {
55
55
  if (mapping.warning !== undefined) {
56
56
  context.warnings.push(`${label}: ${mapping.warning}`);
57
57
  }
58
+ const omit = context.options.omitWarnings ?? {};
58
59
  const defaultText = describeDefault(field);
59
- if (defaultText !== undefined) {
60
+ if (defaultText !== undefined && omit.defaults !== true) {
60
61
  context.warnings.push(`${label}: ${defaultText} has no Neo4j schema representation and was dropped; set the value when you create the node.`);
61
62
  }
62
- if (field.default?.kind === 'autoIncrement') {
63
+ if (field.default?.kind === 'autoIncrement' && omit.autoIncrement !== true) {
63
64
  context.warnings.push(`${label}: auto-increment has no Neo4j equivalent; supply the value yourself (or use randomUUID() and a STRING key).`);
64
65
  }
65
66
  if (field.generated !== undefined) {
@@ -152,7 +153,10 @@ function buildProperties(context, model) {
152
153
  }
153
154
  return { properties, keys, foreignKeys };
154
155
  }
155
- function maxLengthWarning(model) {
156
+ function maxLengthWarning(model, omit) {
157
+ if (omit) {
158
+ return undefined;
159
+ }
156
160
  const names = model.fields
157
161
  .filter((field) => field.maxLength !== undefined)
158
162
  .map((field) => field.name);
@@ -259,7 +263,7 @@ export function buildGraph(schema, options, warnings) {
259
263
  };
260
264
  nodes.push(node);
261
265
  byModel.set(model.name, node);
262
- const lengths = maxLengthWarning(model);
266
+ const lengths = maxLengthWarning(model, options.omitWarnings?.maxLength === true);
263
267
  if (lengths !== undefined) {
264
268
  warnings.push(lengths);
265
269
  }
@@ -285,7 +289,7 @@ function buildJoin(context, candidate) {
285
289
  if (surrogateKey !== undefined) {
286
290
  context.warnings.push(`${model.name}: the join table became a relationship, so its surrogate key ${surrogateKey.name} was dropped.`);
287
291
  }
288
- const lengths = maxLengthWarning(model);
292
+ const lengths = maxLengthWarning(model, context.options.omitWarnings?.maxLength === true);
289
293
  if (lengths !== undefined) {
290
294
  context.warnings.push(lengths);
291
295
  }