ormbridge 0.11.0 → 0.12.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 CHANGED
@@ -31,6 +31,7 @@ It reads source files with [tree-sitter](https://tree-sitter.github.io/), so you
31
31
  | TypeScript interfaces | | ✔ | Plain interfaces and enums for front ends |
32
32
  | Graphene (graphene-django) | | ✔ | GraphQL types, queries and mutations that pair with Django |
33
33
  | Zod schemas | | ✔ | Zod 4 schemas and inferred types |
34
+ | Neo4j (Cypher) | | ✔ | Node constraints and indexes; relationships as comments; `--style enterprise` for Enterprise |
34
35
 
35
36
  Each format has a [guide](./docs/formats/README.md) and a runnable [example project](./examples/README.md).
36
37
 
@@ -89,6 +90,12 @@ Prisma to Zod schemas:
89
90
  ormbridge convert -i ./prisma/schema.prisma --to zod -o ./src/schemas.ts
90
91
  ```
91
92
 
93
+ Prisma to a Neo4j Cypher schema (constraints and indexes; `--style enterprise` adds Enterprise Edition statements):
94
+
95
+ ```bash
96
+ ormbridge convert -i ./prisma/schema.prisma --to neo4j -o ./neo4j/schema.cypher
97
+ ```
98
+
92
99
  Fail a build when generated files are out of date:
93
100
 
94
101
  ```bash
package/dist/cliRunner.js CHANGED
@@ -346,7 +346,7 @@ export async function runCli(argv, env) {
346
346
  .option('--namespace <name>', 'namespace of the generated classes: PHP for Doctrine (default: App\\Entity) and Laravel (default: App\\Models), C# for EF Core (default: App.Models), Java package for JPA (default: app.models)')
347
347
  .option('--go-package <name>', 'Go package name of the GORM models (default: models)')
348
348
  .option('--prisma-version <version>', 'Prisma major version of the generator and datasource blocks (6 | 7) (default: 6; 7 writes the prisma-client generator and no datasource url)')
349
- .option('--style <name>', `layout of the SQLAlchemy, Sequelize, EF Core and JPA output (${OUTPUT_STYLES.join(' | ')}): sqlalchemy | sqlmodel for --to sqlalchemy (default: sqlalchemy), init | define for --to sequelize (default: init), annotations | fluent for --to efcore (default: annotations), jakarta | javax for --to jpa (default: jakarta)`)
349
+ .option('--style <name>', `layout of the SQLAlchemy, Sequelize, EF Core, JPA and Neo4j output (${OUTPUT_STYLES.join(' | ')}): sqlalchemy | sqlmodel for --to sqlalchemy (default: sqlalchemy), init | define for --to sequelize (default: init), annotations | fluent for --to efcore (default: annotations), jakarta | javax for --to jpa (default: jakarta), community | enterprise for --to neo4j (default: community; enterprise adds the statements that need Neo4j Enterprise Edition)`)
350
350
  .option('--dry-run', 'run the conversion and report what would be written, without touching any file')
351
351
  .option('--check', 'exit with code 3 if an output file is missing or differs from the conversion; writes nothing')
352
352
  .option('--config <path>', 'read settings from this JSON config file instead of searching for ormbridge.config.json')
@@ -1 +1 @@
1
- {"version":3,"file":"cliRunner.js","sourceRoot":"","sources":["../src/cliRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cliRunner.js","sourceRoot":"","sources":["../src/cliRunner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { IrSchema } from '../ir.js';
2
+ import type { Neo4jStyle } from './neo4jTypes.js';
3
+ import type { EmitOutput } from './prisma.js';
4
+ export { isNeo4jStyle, NEO4J_STYLES, type Neo4jStyle } from './neo4jTypes.js';
5
+ /**
6
+ * Neo4j (Cypher) writer.
7
+ *
8
+ * Writes ONE script of schema statements and comments, no data. Each model is a node label, its
9
+ * columns are properties, and the primary key, unique columns and unique indexes become uniqueness
10
+ * constraints, the other indexes range indexes (full-text indexes stay full-text). Cypher has no
11
+ * relationship schema, so foreign keys, relations and join tables are written as comment blocks, and the
12
+ * foreign key columns stay as plain properties so data can be loaded first and the relationships
13
+ * created afterwards with `MATCH ... MERGE`. A pure join table becomes one relationship.
14
+ *
15
+ * The `community` style (default) writes only what Neo4j Community Edition accepts. The
16
+ * `enterprise` style adds `IS NOT NULL` constraints, `IS NODE KEY` for composite primary keys and
17
+ * property type constraints (Neo4j 5.9 or later). Every statement uses `IF NOT EXISTS`, so the
18
+ * script can run again.
19
+ */
20
+ export interface Neo4jEmitOptions {
21
+ /** Use camelCase property keys (the `normalize` naming mode); otherwise the column names are kept. */
22
+ camelFields: boolean;
23
+ /** `community` (default) or `enterprise`. */
24
+ style?: Neo4jStyle;
25
+ /** Write the comment block at the top of the script (default true). */
26
+ header?: boolean;
27
+ }
28
+ export declare function emitNeo4j(schema: IrSchema, options: Neo4jEmitOptions): EmitOutput;
@@ -0,0 +1,211 @@
1
+ import { buildGraph, primaryKeyNamesOf, } from './neo4jGraph.js';
2
+ import { oneLine, quoteIdentifier } from './neo4jNames.js';
3
+ import { writeRelationships } from './neo4jRelationships.js';
4
+ import { nodeTarget, StatementWriter, } from './neo4jStatements.js';
5
+ export { isNeo4jStyle, NEO4J_STYLES } from './neo4jTypes.js';
6
+ export function emitNeo4j(schema, options) {
7
+ const style = options.style ?? 'community';
8
+ const warnings = schemaWarnings(schema);
9
+ if (schema.models.length === 0) {
10
+ return { text: '', warnings };
11
+ }
12
+ const graph = buildGraph(schema, { camelFields: options.camelFields }, warnings);
13
+ const writer = new StatementWriter(style);
14
+ const sections = [];
15
+ if (options.header !== false) {
16
+ sections.push(headerLines(graph, style));
17
+ }
18
+ for (const node of graph.nodes) {
19
+ sections.push(nodeSection(node, writer, warnings));
20
+ }
21
+ const relationships = writeRelationships(schema, graph, writer, warnings);
22
+ if (relationships.lines.length > 0) {
23
+ sections.push([
24
+ ...banner('Relationships (documentation; Neo4j keeps no relationship schema)'),
25
+ ...relationships.lines,
26
+ ]);
27
+ }
28
+ return {
29
+ text: `${sections.map((lines) => lines.join('\n')).join('\n\n')}\n`,
30
+ warnings,
31
+ };
32
+ }
33
+ // ---------------------------------------------------------------------------
34
+ // Warnings for constructs Neo4j has no place for
35
+ // ---------------------------------------------------------------------------
36
+ function schemaWarnings(schema) {
37
+ const warnings = [];
38
+ for (const enumDefinition of schema.enums) {
39
+ if (enumDefinition.schema !== undefined) {
40
+ warnings.push(`enum ${enumDefinition.name}: the database schema "${enumDefinition.schema}" (@@schema) was ignored.`);
41
+ }
42
+ }
43
+ for (const model of schema.models) {
44
+ if (model.isView === true) {
45
+ warnings.push(`${model.name}: this is a database view; it was written as a node label like any other model.`);
46
+ }
47
+ if (model.schema !== undefined) {
48
+ warnings.push(`${model.name}: the database schema "${model.schema}" (@@schema) was ignored.`);
49
+ }
50
+ }
51
+ return warnings;
52
+ }
53
+ // ---------------------------------------------------------------------------
54
+ // Comments
55
+ // ---------------------------------------------------------------------------
56
+ const RULE = `// ${'-'.repeat(75)}`;
57
+ function banner(title) {
58
+ return [RULE, `// ${title}`, RULE];
59
+ }
60
+ function headerLines(graph, style) {
61
+ const lines = [
62
+ '// Neo4j schema (Cypher, Neo4j 5) generated by ormbridge.',
63
+ style === 'enterprise'
64
+ ? '// Style: enterprise. Needs Neo4j Enterprise Edition 5.9 or later (IS NOT NULL, NODE KEY and type constraints).'
65
+ : '// Style: community. IS NOT NULL, NODE KEY and type constraints need Enterprise Edition; use --style enterprise to add them.',
66
+ '// Every statement uses IF NOT EXISTS, so the script can run again (cypher-shell -f schema.cypher).',
67
+ '//',
68
+ '// The graph model is derived: each model is a node label and each foreign key or join table is',
69
+ '// documented below as a relationship. Neo4j keeps no relationship schema, so the foreign key',
70
+ '// columns stay as plain properties. Load the nodes first, then create the relationships with the',
71
+ '// MATCH ... MERGE queries in the relationship comments.',
72
+ ];
73
+ const foreignKeys = graph.nodes.flatMap((node) => node.foreignKeys.map((property) => `${node.label}.${property.key}`));
74
+ if (foreignKeys.length > 0) {
75
+ lines.push('//', `// Foreign key properties kept: ${foreignKeys.join(', ')}`);
76
+ }
77
+ return lines;
78
+ }
79
+ function describeProperty(property) {
80
+ const notes = [
81
+ property.required ? 'required' : 'optional',
82
+ ...property.notes,
83
+ ];
84
+ return `// ${quoteIdentifier(property.key)}: ${property.type.name} (${notes.join('; ')})`;
85
+ }
86
+ // ---------------------------------------------------------------------------
87
+ // One node label
88
+ // ---------------------------------------------------------------------------
89
+ function resolveKeys(node, names) {
90
+ const keys = [];
91
+ for (const name of names) {
92
+ const key = node.keys.get(name);
93
+ if (key === undefined) {
94
+ return undefined;
95
+ }
96
+ keys.push(key);
97
+ }
98
+ return keys;
99
+ }
100
+ function pushAll(target, statement) {
101
+ if (statement !== undefined) {
102
+ target.push(statement);
103
+ }
104
+ }
105
+ function nodeSection(node, writer, warnings) {
106
+ const model = node.model;
107
+ const target = nodeTarget(node.label);
108
+ const lines = banner(`:${quoteIdentifier(node.label)} (model ${oneLine(model.name)}, table ${oneLine(model.tableName)})`);
109
+ const constraints = [];
110
+ const typing = [];
111
+ const indexes = [];
112
+ const notes = [];
113
+ const keyed = new Set();
114
+ // Primary key.
115
+ const keyNames = primaryKeyNamesOf(model);
116
+ const keyProperties = resolveKeys(node, keyNames);
117
+ if (keyNames.length > 0 && keyProperties === undefined) {
118
+ warnings.push(`${model.name}: the primary key (${keyNames.join(', ')}) names a column that does not exist, so it was dropped.`);
119
+ }
120
+ else if (keyProperties !== undefined && keyProperties.length === 1) {
121
+ pushAll(constraints, writer.unique(target, keyProperties));
122
+ }
123
+ else if (keyProperties !== undefined && keyProperties.length > 1) {
124
+ if (writer.style === 'enterprise') {
125
+ pushAll(constraints, writer.nodeKey(target, keyProperties));
126
+ keyProperties.forEach((key) => keyed.add(key));
127
+ }
128
+ else {
129
+ constraints.push(`// Composite primary key (${keyProperties.join(', ')}): NODE KEY needs Enterprise Edition, so a uniqueness constraint is used.`);
130
+ pushAll(constraints, writer.unique(target, keyProperties));
131
+ }
132
+ }
133
+ // Unique columns and one-to-one foreign keys.
134
+ for (const field of model.fields) {
135
+ const key = node.keys.get(field.name);
136
+ if (field.isUnique && key !== undefined) {
137
+ pushAll(constraints, writer.unique(target, [key]));
138
+ }
139
+ }
140
+ for (const relation of model.relations) {
141
+ const key = node.keys.get(relation.name);
142
+ if (relation.kind === 'oneToOne' && key !== undefined) {
143
+ pushAll(constraints, writer.unique(target, [key]));
144
+ }
145
+ }
146
+ // Indexes. Uniqueness constraints go first: Neo4j refuses one when a plain index over the same
147
+ // properties already exists.
148
+ const ordered = [
149
+ ...model.indexes.filter(isUniqueIndex),
150
+ ...model.indexes.filter((index) => !isUniqueIndex(index)),
151
+ ];
152
+ for (const index of ordered) {
153
+ writeIndex(node, index, writer, target, constraints, indexes, warnings);
154
+ }
155
+ // Enterprise: existence and type constraints.
156
+ const required = [];
157
+ for (const property of node.properties) {
158
+ if (property.required && !keyed.has(property.key)) {
159
+ required.push(property.key);
160
+ }
161
+ }
162
+ if (writer.style === 'enterprise') {
163
+ for (const key of required) {
164
+ pushAll(constraints, writer.required(target, key));
165
+ }
166
+ for (const property of node.properties) {
167
+ if (property.type.constrainable) {
168
+ pushAll(typing, writer.typed(target, property.key, property.type));
169
+ }
170
+ }
171
+ }
172
+ else if (required.length > 0) {
173
+ notes.push(`// Required properties (IS NOT NULL needs Enterprise Edition): ${required.join(', ')}`);
174
+ }
175
+ lines.push(...constraints, ...typing, ...indexes, ...notes);
176
+ lines.push('//', `// Properties of :${quoteIdentifier(node.label)} and their Neo4j types:`);
177
+ lines.push(...node.properties.map(describeProperty));
178
+ return lines;
179
+ }
180
+ function isUniqueIndex(index) {
181
+ return index.isUnique && index.kind !== 'fulltext';
182
+ }
183
+ /** Writes one IR index as a constraint or an index, or drops it with a warning. */
184
+ function writeIndex(node, index, writer, target, constraints, indexes, warnings) {
185
+ const label = `${node.model.name} index (${index.fields.join(', ')})`;
186
+ const keys = resolveKeys(node, index.fields);
187
+ if (keys === undefined || keys.length === 0) {
188
+ warnings.push(`${label}: it names a column that does not exist and was dropped.`);
189
+ return;
190
+ }
191
+ if (index.method !== undefined && index.method.toLowerCase() !== 'btree') {
192
+ warnings.push(`${label}: Neo4j has no ${index.method} index method; the index was dropped.`);
193
+ return;
194
+ }
195
+ const hasOptions = index.clustered !== undefined ||
196
+ (index.fieldOptions !== undefined &&
197
+ Object.keys(index.fieldOptions).length > 0);
198
+ if (hasOptions) {
199
+ warnings.push(`${label}: clustering, sort order, prefix length and operator class options have no Neo4j equivalent and were dropped.`);
200
+ }
201
+ if (index.kind === 'fulltext') {
202
+ pushAll(indexes, writer.fulltext(target, keys));
203
+ }
204
+ else if (index.isUnique) {
205
+ pushAll(constraints, writer.unique(target, keys));
206
+ }
207
+ else {
208
+ pushAll(indexes, writer.index(target, keys));
209
+ }
210
+ }
211
+ //# sourceMappingURL=neo4j.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neo4j.js","sourceRoot":"","sources":["../../src/emitters/neo4j.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type { IrField, IrModel, IrRelation, IrSchema } from '../ir.js';
2
+ import { type Neo4jType } from './neo4jTypes.js';
3
+ /**
4
+ * The graph model derived from the IR: one node per model, except pure join tables, which become a
5
+ * single relationship. The statement and comment writers read this model and never the IR directly.
6
+ */
7
+ /** A property of a node (or of a relationship, for the extra columns of a join table). */
8
+ export interface GraphProperty {
9
+ /** The property key as written in Cypher (before quoting). */
10
+ key: string;
11
+ /** The IR field name, or the relation name for a foreign key column. */
12
+ irName: string;
13
+ type: Neo4jType;
14
+ required: boolean;
15
+ /** Short remarks shown in the property comment block, for example `primary key`. */
16
+ notes: string[];
17
+ }
18
+ export interface GraphNode {
19
+ model: IrModel;
20
+ label: string;
21
+ properties: GraphProperty[];
22
+ /** IR field name, relation name and column name to property key. */
23
+ keys: Map<string, string>;
24
+ /** The foreign key properties (a subset of `properties`). */
25
+ foreignKeys: GraphProperty[];
26
+ }
27
+ /** A join table written as one relationship. */
28
+ export interface GraphJoin {
29
+ model: IrModel;
30
+ from: IrRelation;
31
+ to: IrRelation;
32
+ type: string;
33
+ /** The surrogate key column that was dropped, if the table had one. */
34
+ surrogateKey?: IrField;
35
+ /** Columns beyond the two foreign keys; they become relationship properties. */
36
+ extras: GraphProperty[];
37
+ /** Property keys of the two foreign keys on the join table, in `from`, `to` order. */
38
+ pairColumns: [string, string];
39
+ keys: Map<string, string>;
40
+ }
41
+ export interface Graph {
42
+ nodes: GraphNode[];
43
+ joins: GraphJoin[];
44
+ byModel: Map<string, GraphNode>;
45
+ }
46
+ export interface GraphOptions {
47
+ camelFields: boolean;
48
+ }
49
+ /** IR names (fields and relations) that make up the primary key of a model. */
50
+ export declare function primaryKeyNamesOf(model: IrModel): string[];
51
+ /** The field a foreign key points at: `toField`, or the single primary key field of the target. */
52
+ export declare function referencedField(schema: IrSchema, relation: IrRelation): IrField | undefined;
53
+ /**
54
+ * Derives the graph model. Warnings for dropped or approximated details are added to `warnings`
55
+ * in model order.
56
+ */
57
+ export declare function buildGraph(schema: IrSchema, options: GraphOptions, warnings: string[]): Graph;