@bairock/lenz 0.0.14 → 0.0.15
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 +31 -4
- package/dist/cli/commands/generate.js +36 -75
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/init.js +22 -28
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/studio.js +15 -21
- package/dist/cli/commands/studio.js.map +1 -1
- package/dist/cli/index.js +13 -18
- package/dist/cli/index.js.map +1 -1
- package/dist/config/index.js +7 -12
- package/dist/config/index.js.map +1 -1
- package/dist/engine/CodeGenerator.d.ts +2 -1
- package/dist/engine/CodeGenerator.d.ts.map +1 -1
- package/dist/engine/CodeGenerator.js +78 -43
- package/dist/engine/CodeGenerator.js.map +1 -1
- package/dist/engine/GraphQLParser.d.ts +2 -0
- package/dist/engine/GraphQLParser.d.ts.map +1 -1
- package/dist/engine/GraphQLParser.js +19 -16
- package/dist/engine/GraphQLParser.js.map +1 -1
- package/dist/engine/LenzEngine.d.ts +3 -3
- package/dist/engine/LenzEngine.js +32 -39
- package/dist/engine/LenzEngine.js.map +1 -1
- package/dist/engine/SchemaValidator.d.ts +1 -1
- package/dist/engine/SchemaValidator.d.ts.map +1 -1
- package/dist/engine/SchemaValidator.js +44 -32
- package/dist/engine/SchemaValidator.js.map +1 -1
- package/dist/engine/directives.d.ts.map +1 -1
- package/dist/engine/directives.js +44 -45
- package/dist/engine/directives.js.map +1 -1
- package/dist/engine/index.d.ts +3 -3
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +3 -9
- package/dist/engine/index.js.map +1 -1
- package/dist/errors/index.js +14 -31
- package/dist/errors/index.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -30
- package/dist/index.js.map +1 -1
- package/package.json +2 -3
|
@@ -1,36 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const CodeGenerator_1 = require("./CodeGenerator");
|
|
9
|
-
const fs_1 = require("fs");
|
|
10
|
-
const path_1 = require("path");
|
|
11
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
12
|
-
const errors_1 = require("../errors");
|
|
13
|
-
class LenzEngine {
|
|
1
|
+
import { GraphQLParser } from './GraphQLParser.js';
|
|
2
|
+
import { CodeGenerator } from './CodeGenerator.js';
|
|
3
|
+
import { promises as fs, existsSync } from 'fs';
|
|
4
|
+
import { join, dirname } from 'path';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import { SchemaValidationError, SchemaParseError, CodeGenerationError, ConfigurationError } from '../errors/index.js';
|
|
7
|
+
export class LenzEngine {
|
|
14
8
|
constructor(options) {
|
|
15
9
|
this.options = options;
|
|
16
10
|
this.parser = null;
|
|
17
|
-
this.generator = new
|
|
11
|
+
this.generator = new CodeGenerator();
|
|
18
12
|
}
|
|
19
13
|
async generate() {
|
|
20
14
|
try {
|
|
21
|
-
console.log(
|
|
15
|
+
console.log(chalk.blue('🚀 Starting Lenz code generation...'));
|
|
22
16
|
// 1. Load and parse schema
|
|
23
|
-
console.log(
|
|
24
|
-
if (!
|
|
25
|
-
throw new
|
|
17
|
+
console.log(chalk.blue(`📄 Loading schema from: ${this.options.schemaPath}`));
|
|
18
|
+
if (!existsSync(this.options.schemaPath)) {
|
|
19
|
+
throw new ConfigurationError(`Schema file not found: ${this.options.schemaPath}`, { schemaPath: this.options.schemaPath });
|
|
26
20
|
}
|
|
27
|
-
const schemaSDL = await
|
|
28
|
-
this.parser = new
|
|
21
|
+
const schemaSDL = await fs.readFile(this.options.schemaPath, 'utf-8');
|
|
22
|
+
this.parser = new GraphQLParser(schemaSDL);
|
|
29
23
|
// Validate schema
|
|
30
|
-
console.log(
|
|
24
|
+
console.log(chalk.blue('🔍 Validating schema...'));
|
|
31
25
|
this.parser.validate();
|
|
32
26
|
const schemaInfo = this.parser.getSchemaInfo();
|
|
33
|
-
console.log(
|
|
27
|
+
console.log(chalk.blue(`📊 Found ${schemaInfo.modelCount} models, ${schemaInfo.enumCount} enums, ${schemaInfo.relationCount} relations`));
|
|
34
28
|
// 2. Create output directory structure
|
|
35
29
|
await this.ensureDirectoryStructure(this.options.outputPath);
|
|
36
30
|
// 3. Generate code
|
|
@@ -45,39 +39,39 @@ class LenzEngine {
|
|
|
45
39
|
// 4. Write files
|
|
46
40
|
let fileCount = 0;
|
|
47
41
|
for (const [filePath, content] of Object.entries(generatedFiles)) {
|
|
48
|
-
const fullPath =
|
|
49
|
-
await this.ensureDirectoryStructure(
|
|
50
|
-
await
|
|
42
|
+
const fullPath = join(this.options.outputPath, filePath);
|
|
43
|
+
await this.ensureDirectoryStructure(dirname(fullPath));
|
|
44
|
+
await fs.writeFile(fullPath, content, 'utf-8');
|
|
51
45
|
fileCount++;
|
|
52
46
|
}
|
|
53
47
|
// 5. Generate package.json for the client
|
|
54
48
|
await this.generateClientPackageJson();
|
|
55
|
-
console.log(
|
|
56
|
-
console.log(
|
|
49
|
+
console.log(chalk.green(`✅ Generated ${fileCount} files to ${this.options.outputPath}`));
|
|
50
|
+
console.log(chalk.green('✨ Client is ready to use!'));
|
|
57
51
|
}
|
|
58
52
|
catch (error) {
|
|
59
|
-
console.log(
|
|
53
|
+
console.log(chalk.red('❌ Generation failed:'));
|
|
60
54
|
// Check if it's already a LenzError
|
|
61
|
-
const isLenzError = error instanceof
|
|
62
|
-
error instanceof
|
|
55
|
+
const isLenzError = error instanceof SchemaValidationError || error instanceof SchemaParseError ||
|
|
56
|
+
error instanceof CodeGenerationError || error instanceof ConfigurationError;
|
|
63
57
|
if (isLenzError) {
|
|
64
|
-
console.log(
|
|
58
|
+
console.log(chalk.red(` ${error.code}: ${error.message}`));
|
|
65
59
|
if (error.details) {
|
|
66
|
-
console.log(
|
|
60
|
+
console.log(chalk.gray(' Details:', JSON.stringify(error.details, null, 2)));
|
|
67
61
|
}
|
|
68
62
|
throw error;
|
|
69
63
|
}
|
|
70
64
|
else {
|
|
71
65
|
// Wrap generic errors
|
|
72
|
-
const generationError = new
|
|
73
|
-
console.log(
|
|
66
|
+
const generationError = new CodeGenerationError(error instanceof Error ? error.message : String(error), { originalError: error });
|
|
67
|
+
console.log(chalk.red(` ${generationError.code}: ${generationError.message}`));
|
|
74
68
|
throw generationError;
|
|
75
69
|
}
|
|
76
70
|
}
|
|
77
71
|
}
|
|
78
72
|
async ensureDirectoryStructure(path) {
|
|
79
|
-
if (!
|
|
80
|
-
await
|
|
73
|
+
if (!existsSync(path)) {
|
|
74
|
+
await fs.mkdir(path, { recursive: true });
|
|
81
75
|
}
|
|
82
76
|
}
|
|
83
77
|
async generateClientPackageJson() {
|
|
@@ -101,12 +95,11 @@ class LenzEngine {
|
|
|
101
95
|
}
|
|
102
96
|
}
|
|
103
97
|
};
|
|
104
|
-
const packageJsonPath =
|
|
105
|
-
await
|
|
98
|
+
const packageJsonPath = join(this.options.outputPath, 'package.json');
|
|
99
|
+
await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2), 'utf-8');
|
|
106
100
|
}
|
|
107
101
|
getSchemaInfo() {
|
|
108
102
|
return this.parser?.getSchemaInfo();
|
|
109
103
|
}
|
|
110
104
|
}
|
|
111
|
-
exports.LenzEngine = LenzEngine;
|
|
112
105
|
//# sourceMappingURL=LenzEngine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LenzEngine.js","sourceRoot":"","sources":["../../src/engine/LenzEngine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LenzEngine.js","sourceRoot":"","sources":["../../src/engine/LenzEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GraphQLModel, GraphQLEnum, ModelRelation } from './GraphQLParser';
|
|
1
|
+
import { GraphQLModel, GraphQLEnum, ModelRelation } from './GraphQLParser.js';
|
|
2
2
|
export interface ValidationOptions {
|
|
3
3
|
/** Whether to check for circular dependencies (default: true) */
|
|
4
4
|
checkCircularDependencies?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaValidator.d.ts","sourceRoot":"","sources":["../../src/engine/SchemaValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,aAAa,EAEd,MAAM,
|
|
1
|
+
{"version":3,"file":"SchemaValidator.d.ts","sourceRoot":"","sources":["../../src/engine/SchemaValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,aAAa,EAEd,MAAM,oBAAoB,CAAC;AAY5B,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,sDAAsD;IACtD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oDAAoD;IACpD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,qDAAqD;IACrD,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,oBAAoB,CAGzB;gBAGD,MAAM,EAAE,YAAY,EAAE,EACtB,KAAK,EAAE,WAAW,EAAE,EACpB,SAAS,EAAE,aAAa,EAAE;IAO5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAezB;;OAEG;IACH,QAAQ,CAAC,OAAO,GAAE,iBAAsB,GAAG,IAAI;IAkC/C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA+B1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4B1B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAqC/B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA8HzB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAyDjC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgB9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAuElC;;OAEG;IACH,WAAW,IAAI,MAAM,EAAE;CAwBxB"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const errors_1 = require("../errors");
|
|
5
|
-
const directives_1 = require("./directives");
|
|
6
|
-
class SchemaValidator {
|
|
1
|
+
import { SchemaValidationError, CircularDependencyError, DuplicateModelError, DuplicateFieldError, InvalidFieldTypeError, InvalidDirectiveError, RelationValidationError } from '../errors/index.js';
|
|
2
|
+
import { isLenzDirective, getDirectiveDefinition } from './directives.js';
|
|
3
|
+
export class SchemaValidator {
|
|
7
4
|
constructor(models, enums, relations) {
|
|
8
5
|
this.supportedScalarTypes = new Set([
|
|
9
6
|
'String', 'Int', 'Float', 'Boolean', 'ID',
|
|
@@ -62,7 +59,7 @@ class SchemaValidator {
|
|
|
62
59
|
const seen = new Set();
|
|
63
60
|
for (const model of this.models) {
|
|
64
61
|
if (seen.has(model.name)) {
|
|
65
|
-
throw new
|
|
62
|
+
throw new DuplicateModelError(model.name);
|
|
66
63
|
}
|
|
67
64
|
seen.add(model.name);
|
|
68
65
|
}
|
|
@@ -75,7 +72,7 @@ class SchemaValidator {
|
|
|
75
72
|
const seen = new Set();
|
|
76
73
|
for (const field of model.fields) {
|
|
77
74
|
if (seen.has(field.name)) {
|
|
78
|
-
throw new
|
|
75
|
+
throw new DuplicateFieldError(model.name, field.name);
|
|
79
76
|
}
|
|
80
77
|
seen.add(field.name);
|
|
81
78
|
}
|
|
@@ -94,7 +91,7 @@ class SchemaValidator {
|
|
|
94
91
|
for (const field of model.fields) {
|
|
95
92
|
// Check if type exists (scalar, model, or enum)
|
|
96
93
|
if (!validTypes.has(field.type)) {
|
|
97
|
-
throw new
|
|
94
|
+
throw new InvalidFieldTypeError(model.name, field.name, field.type, { validTypes: Array.from(validTypes) });
|
|
98
95
|
}
|
|
99
96
|
// Additional type-specific validations
|
|
100
97
|
if (field.type === 'ID' && !field.isId && !this.isForeignKeyField(model.name, field.name)) {
|
|
@@ -113,9 +110,9 @@ class SchemaValidator {
|
|
|
113
110
|
// Check model-level directives
|
|
114
111
|
for (const directive of model.fields.flatMap(f => f.directives)) {
|
|
115
112
|
const directiveName = directive.replace(/^@/, '');
|
|
116
|
-
if (
|
|
113
|
+
if (isLenzDirective(directiveName)) {
|
|
117
114
|
// Директива Lenz - проверяем соответствие ожидаемым местам применения
|
|
118
|
-
const directiveDef =
|
|
115
|
+
const directiveDef = getDirectiveDefinition(directiveName);
|
|
119
116
|
if (directiveDef) {
|
|
120
117
|
// TODO: В будущем можно добавить проверку мест применения (DirectiveLocation)
|
|
121
118
|
// Например, проверить что @model применяется только на уровне OBJECT
|
|
@@ -141,15 +138,15 @@ class SchemaValidator {
|
|
|
141
138
|
const directives = field.directives;
|
|
142
139
|
// Check for conflicting directives
|
|
143
140
|
if (directives.includes('id') && directives.includes('unique')) {
|
|
144
|
-
throw new
|
|
141
|
+
throw new InvalidDirectiveError('unique', `field '${field.name}' in model '${modelName}'`, { reason: 'Cannot have both @id and @unique directives on the same field' });
|
|
145
142
|
}
|
|
146
143
|
// Validate @hide directive
|
|
147
144
|
if (directives.includes('hide')) {
|
|
148
145
|
if (directives.includes('id')) {
|
|
149
|
-
throw new
|
|
146
|
+
throw new InvalidDirectiveError('hide', `field '${field.name}' in model '${modelName}'`, { reason: 'Cannot use @hide directive on @id field' });
|
|
150
147
|
}
|
|
151
148
|
if (field.isRelation) {
|
|
152
|
-
throw new
|
|
149
|
+
throw new InvalidDirectiveError('hide', `field '${field.name}' in model '${modelName}'`, { reason: 'Cannot use @hide directive on relation fields' });
|
|
153
150
|
}
|
|
154
151
|
}
|
|
155
152
|
// Note: @relation directive validation is skipped because relation detection
|
|
@@ -166,10 +163,10 @@ class SchemaValidator {
|
|
|
166
163
|
const sourceModel = this.models.find(m => m.relations.some(r => r.field === relation.field && r.target === relation.target));
|
|
167
164
|
const targetModel = this.models.find(m => m.name === relation.target);
|
|
168
165
|
if (!sourceModel) {
|
|
169
|
-
throw new
|
|
166
|
+
throw new RelationValidationError(`Source model for relation '${relation.field}' -> '${relation.target}' not found`, { relation });
|
|
170
167
|
}
|
|
171
168
|
if (!targetModel) {
|
|
172
|
-
throw new
|
|
169
|
+
throw new RelationValidationError(`Target model '${relation.target}' not found for relation`, { relation });
|
|
173
170
|
}
|
|
174
171
|
// Check if foreign key field exists for certain relation types
|
|
175
172
|
if (relation.foreignKey) {
|
|
@@ -182,20 +179,20 @@ class SchemaValidator {
|
|
|
182
179
|
modelWithForeignKey = sourceModel;
|
|
183
180
|
}
|
|
184
181
|
if (!modelWithForeignKey) {
|
|
185
|
-
throw new
|
|
182
|
+
throw new RelationValidationError(`Foreign key field '${relation.foreignKey}' not found in source model '${sourceModel.name}'`, { relation });
|
|
186
183
|
}
|
|
187
184
|
// Validate field type
|
|
188
185
|
if (fieldInSource) {
|
|
189
186
|
if (relation.type === 'oneToMany') {
|
|
190
187
|
// For oneToMany: foreign key must be array of IDs in source
|
|
191
188
|
if (!fieldInSource.isArray || fieldInSource.type !== 'ID') {
|
|
192
|
-
throw new
|
|
189
|
+
throw new RelationValidationError(`Foreign key field '${relation.foreignKey}' in source model '${sourceModel.name}' must be an array of IDs (type: [ID!]!) for one-to-many relation`, { relation });
|
|
193
190
|
}
|
|
194
191
|
}
|
|
195
192
|
else if (relation.type === 'manyToOne' || relation.type === 'oneToOne') {
|
|
196
193
|
// For manyToOne and oneToOne: foreign key must be single ID in source
|
|
197
194
|
if (fieldInSource.isArray || fieldInSource.type !== 'ID') {
|
|
198
|
-
throw new
|
|
195
|
+
throw new RelationValidationError(`Foreign key field '${relation.foreignKey}' in source model '${sourceModel.name}' must be a single ID (type: ID!) for ${relation.type} relation`, { relation });
|
|
199
196
|
}
|
|
200
197
|
}
|
|
201
198
|
// manyToMany doesn't use foreign key field
|
|
@@ -204,7 +201,7 @@ class SchemaValidator {
|
|
|
204
201
|
// Check that relation field references correct ID field
|
|
205
202
|
const relationField = sourceModel.fields.find(f => f.name === relation.field);
|
|
206
203
|
if (!relationField) {
|
|
207
|
-
throw new
|
|
204
|
+
throw new RelationValidationError(`Relation field '${relation.field}' not found in source model '${sourceModel.name}'`, { relation });
|
|
208
205
|
}
|
|
209
206
|
// Get the referenced field name from the relation field's foreignKey property
|
|
210
207
|
const referencedFieldName = relationField.foreignKey;
|
|
@@ -218,25 +215,25 @@ class SchemaValidator {
|
|
|
218
215
|
modelWithRefField = sourceModel;
|
|
219
216
|
}
|
|
220
217
|
if (!referencedField || !modelWithRefField) {
|
|
221
|
-
throw new
|
|
218
|
+
throw new RelationValidationError(`Field '${referencedFieldName}' referenced by @relation(field: "...") not found in source model '${sourceModel.name}'`, { relation, referencedFieldName });
|
|
222
219
|
}
|
|
223
220
|
// Validate field type based on relation type
|
|
224
221
|
if (relation.type === 'manyToMany') {
|
|
225
222
|
// For many-to-many, referenced field should be an array of IDs
|
|
226
223
|
if (!referencedField.isArray || referencedField.type !== 'ID') {
|
|
227
|
-
throw new
|
|
224
|
+
throw new RelationValidationError(`Field '${referencedFieldName}' in model '${modelWithRefField.name}' must be an array of IDs (type: [ID!]!) for many-to-many relation`, { relation, referencedFieldName });
|
|
228
225
|
}
|
|
229
226
|
}
|
|
230
227
|
else if (relation.type === 'oneToMany') {
|
|
231
228
|
// For oneToMany: referenced field must be array of IDs in source model
|
|
232
229
|
if (!referencedField.isArray || referencedField.type !== 'ID') {
|
|
233
|
-
throw new
|
|
230
|
+
throw new RelationValidationError(`Field '${referencedFieldName}' in source model '${sourceModel.name}' must be an array of IDs (type: [ID!]!) for one-to-many relation`, { relation, referencedFieldName });
|
|
234
231
|
}
|
|
235
232
|
}
|
|
236
233
|
else {
|
|
237
234
|
// For manyToOne and oneToOne: referenced field must be single ID
|
|
238
235
|
if (referencedField.isArray || referencedField.type !== 'ID') {
|
|
239
|
-
throw new
|
|
236
|
+
throw new RelationValidationError(`Field '${referencedFieldName}' in model '${modelWithRefField.name}' must be a single ID (type: ID!) for ${relation.type} relation`, { relation, referencedFieldName });
|
|
240
237
|
}
|
|
241
238
|
}
|
|
242
239
|
}
|
|
@@ -287,7 +284,7 @@ class SchemaValidator {
|
|
|
287
284
|
const uniqueCycles = cycles.map(cycle => cycle.join(' -> '))
|
|
288
285
|
.filter((value, index, self) => self.indexOf(value) === index);
|
|
289
286
|
for (const cycle of uniqueCycles) {
|
|
290
|
-
throw new
|
|
287
|
+
throw new CircularDependencyError(cycle.split(' -> '), { cycle });
|
|
291
288
|
}
|
|
292
289
|
}
|
|
293
290
|
}
|
|
@@ -313,13 +310,13 @@ class SchemaValidator {
|
|
|
313
310
|
validateEnumValues() {
|
|
314
311
|
for (const enumDef of this.enums) {
|
|
315
312
|
if (enumDef.values.length === 0) {
|
|
316
|
-
throw new
|
|
313
|
+
throw new SchemaValidationError(`Enum '${enumDef.name}' must have at least one value`);
|
|
317
314
|
}
|
|
318
315
|
// Check for duplicate enum values
|
|
319
316
|
const seen = new Set();
|
|
320
317
|
for (const value of enumDef.values) {
|
|
321
318
|
if (seen.has(value)) {
|
|
322
|
-
throw new
|
|
319
|
+
throw new SchemaValidationError(`Duplicate value '${value}' in enum '${enumDef.name}'`);
|
|
323
320
|
}
|
|
324
321
|
seen.add(value);
|
|
325
322
|
}
|
|
@@ -332,20 +329,36 @@ class SchemaValidator {
|
|
|
332
329
|
for (const relation of this.relations) {
|
|
333
330
|
// Validate strategy
|
|
334
331
|
if (relation.strategy !== 'populate' && relation.strategy !== 'lookup') {
|
|
335
|
-
throw new
|
|
332
|
+
throw new SchemaValidationError(`Invalid relation strategy '${relation.strategy}' for relation '${relation.field}' -> '${relation.target}'. ` +
|
|
336
333
|
`Must be either 'populate' or 'lookup'.`);
|
|
337
334
|
}
|
|
338
335
|
// Validate index boolean
|
|
339
336
|
if (typeof relation.index !== 'boolean') {
|
|
340
|
-
throw new
|
|
337
|
+
throw new SchemaValidationError(`Invalid index value '${relation.index}' for relation '${relation.field}' -> '${relation.target}'. ` +
|
|
341
338
|
`Must be a boolean.`);
|
|
342
339
|
}
|
|
340
|
+
// Validate onDelete
|
|
341
|
+
if (relation.onDelete && !['Cascade', 'SetNull', 'NoAction'].includes(relation.onDelete)) {
|
|
342
|
+
throw new SchemaValidationError(`Invalid onDelete value '${relation.onDelete}' for relation '${relation.field}' -> '${relation.target}'. ` +
|
|
343
|
+
`Must be 'Cascade', 'SetNull', or 'NoAction'.`);
|
|
344
|
+
}
|
|
345
|
+
// Validate SetNull requires nullable FK
|
|
346
|
+
if (relation.onDelete === 'SetNull' && relation.foreignKey) {
|
|
347
|
+
const sourceModel = this.models.find(m => m.relations.some(r => r.field === relation.field && r.target === relation.target));
|
|
348
|
+
if (sourceModel) {
|
|
349
|
+
const fkField = sourceModel.fields.find(f => f.name === relation.foreignKey);
|
|
350
|
+
if (fkField && fkField.isRequired) {
|
|
351
|
+
throw new SchemaValidationError(`onDelete: SetNull on relation '${relation.field}' -> '${relation.target}' requires a nullable foreign key field. ` +
|
|
352
|
+
`Field '${relation.foreignKey}' in '${sourceModel.name}' is required.`);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
}
|
|
343
356
|
// Validate lookup strategy requirements
|
|
344
357
|
if (relation.strategy === 'lookup') {
|
|
345
358
|
if (relation.type === 'manyToMany') {
|
|
346
359
|
// For manyToMany, foreign key or join collection is required for lookup
|
|
347
360
|
if (!relation.foreignKey && !relation.joinCollection) {
|
|
348
|
-
throw new
|
|
361
|
+
throw new SchemaValidationError(`Lookup strategy for manyToMany relation '${relation.field}' -> '${relation.target}' requires either a foreign key field or join collection. ` +
|
|
349
362
|
`Add @relation(field: "...") directive with a foreign key field.`);
|
|
350
363
|
}
|
|
351
364
|
// lookup is now implemented for manyToMany with foreign key (array of IDs)
|
|
@@ -353,7 +366,7 @@ class SchemaValidator {
|
|
|
353
366
|
}
|
|
354
367
|
else if (!relation.foreignKey) {
|
|
355
368
|
// For other relation types (oneToMany, manyToOne, oneToOne), foreign key is required
|
|
356
|
-
throw new
|
|
369
|
+
throw new SchemaValidationError(`Lookup strategy requires a foreign key field for relation '${relation.field}' -> '${relation.target}'. ` +
|
|
357
370
|
`Add @relation(field: "...") directive with a foreign key field.`);
|
|
358
371
|
}
|
|
359
372
|
// Warn about manual array synchronization requirement
|
|
@@ -385,5 +398,4 @@ class SchemaValidator {
|
|
|
385
398
|
return warnings;
|
|
386
399
|
}
|
|
387
400
|
}
|
|
388
|
-
exports.SchemaValidator = SchemaValidator;
|
|
389
401
|
//# sourceMappingURL=SchemaValidator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaValidator.js","sourceRoot":"","sources":["../../src/engine/SchemaValidator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SchemaValidator.js","sourceRoot":"","sources":["../../src/engine/SchemaValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directives.d.ts","sourceRoot":"","sources":["../../src/engine/directives.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAoE,MAAM,SAAS,CAAC;AAG7G,eAAO,MAAM,cAAc,kBAIzB,CAAC;AAEH,eAAO,MAAM,WAAW,kBAItB,CAAC;AAEH,eAAO,MAAM,eAAe,kBAI1B,CAAC;AAEH,eAAO,MAAM,cAAc,kBAIzB,CAAC;AAEH,eAAO,MAAM,gBAAgB,kBAU3B,CAAC;AAEH,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"directives.d.ts","sourceRoot":"","sources":["../../src/engine/directives.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAoE,MAAM,SAAS,CAAC;AAG7G,eAAO,MAAM,cAAc,kBAIzB,CAAC;AAEH,eAAO,MAAM,WAAW,kBAItB,CAAC;AAEH,eAAO,MAAM,eAAe,kBAI1B,CAAC;AAEH,eAAO,MAAM,cAAc,kBAIzB,CAAC;AAEH,eAAO,MAAM,gBAAgB,kBAU3B,CAAC;AAEH,eAAO,MAAM,iBAAiB,kBAsB5B,CAAC;AAEH,eAAO,MAAM,kBAAkB,kBAI7B,CAAC;AAEH,eAAO,MAAM,kBAAkB,kBAI7B,CAAC;AAEH,eAAO,MAAM,iBAAiB,kBAI5B,CAAC;AAEH,eAAO,MAAM,aAAa,kBAIxB,CAAC;AAGH,eAAO,MAAM,cAAc,oBAW1B,CAAC;AAGF,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAE9D;AAGD,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAE1F"}
|
|
@@ -1,99 +1,98 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.lenzDirectives = exports.hideDirective = exports.embeddedDirective = exports.updatedAtDirective = exports.createdAtDirective = exports.relationDirective = exports.defaultDirective = exports.indexDirective = exports.uniqueDirective = exports.idDirective = exports.modelDirective = void 0;
|
|
4
|
-
exports.isLenzDirective = isLenzDirective;
|
|
5
|
-
exports.getDirectiveDefinition = getDirectiveDefinition;
|
|
6
|
-
const graphql_1 = require("graphql");
|
|
1
|
+
import { GraphQLDirective, DirectiveLocation, GraphQLString, GraphQLNonNull, GraphQLBoolean } from 'graphql';
|
|
7
2
|
// Определение всех директив Lenz ORM
|
|
8
|
-
|
|
3
|
+
export const modelDirective = new GraphQLDirective({
|
|
9
4
|
name: 'model',
|
|
10
|
-
locations: [
|
|
5
|
+
locations: [DirectiveLocation.OBJECT],
|
|
11
6
|
description: 'Marks a GraphQL type as a database model'
|
|
12
7
|
});
|
|
13
|
-
|
|
8
|
+
export const idDirective = new GraphQLDirective({
|
|
14
9
|
name: 'id',
|
|
15
|
-
locations: [
|
|
10
|
+
locations: [DirectiveLocation.FIELD_DEFINITION],
|
|
16
11
|
description: 'Marks a field as primary key (auto-generated ObjectId)'
|
|
17
12
|
});
|
|
18
|
-
|
|
13
|
+
export const uniqueDirective = new GraphQLDirective({
|
|
19
14
|
name: 'unique',
|
|
20
|
-
locations: [
|
|
15
|
+
locations: [DirectiveLocation.FIELD_DEFINITION],
|
|
21
16
|
description: 'Creates a unique index on the field'
|
|
22
17
|
});
|
|
23
|
-
|
|
18
|
+
export const indexDirective = new GraphQLDirective({
|
|
24
19
|
name: 'index',
|
|
25
|
-
locations: [
|
|
20
|
+
locations: [DirectiveLocation.FIELD_DEFINITION],
|
|
26
21
|
description: 'Creates a regular index on the field'
|
|
27
22
|
});
|
|
28
|
-
|
|
23
|
+
export const defaultDirective = new GraphQLDirective({
|
|
29
24
|
name: 'default',
|
|
30
|
-
locations: [
|
|
25
|
+
locations: [DirectiveLocation.FIELD_DEFINITION],
|
|
31
26
|
args: {
|
|
32
27
|
value: {
|
|
33
|
-
type: new
|
|
28
|
+
type: new GraphQLNonNull(GraphQLString),
|
|
34
29
|
description: 'Default value for the field'
|
|
35
30
|
}
|
|
36
31
|
},
|
|
37
32
|
description: 'Sets a default value for a field'
|
|
38
33
|
});
|
|
39
|
-
|
|
34
|
+
export const relationDirective = new GraphQLDirective({
|
|
40
35
|
name: 'relation',
|
|
41
|
-
locations: [
|
|
36
|
+
locations: [DirectiveLocation.FIELD_DEFINITION],
|
|
42
37
|
args: {
|
|
43
38
|
field: {
|
|
44
|
-
type: new
|
|
39
|
+
type: new GraphQLNonNull(GraphQLString),
|
|
45
40
|
description: 'The field that stores the foreign key'
|
|
46
41
|
},
|
|
47
42
|
strategy: {
|
|
48
|
-
type:
|
|
43
|
+
type: GraphQLString,
|
|
49
44
|
description: 'Strategy for loading related data: "populate" (default) or "lookup"'
|
|
50
45
|
},
|
|
51
46
|
index: {
|
|
52
|
-
type:
|
|
47
|
+
type: GraphQLBoolean,
|
|
53
48
|
description: 'Whether to create an index on the foreign key field (default: true)'
|
|
49
|
+
},
|
|
50
|
+
onDelete: {
|
|
51
|
+
type: GraphQLString,
|
|
52
|
+
description: 'Cascade delete behavior: "Cascade" (delete related), "SetNull" (nullify FK), or "NoAction" (default, no cascade)'
|
|
54
53
|
}
|
|
55
54
|
},
|
|
56
55
|
description: 'Defines a relationship between models'
|
|
57
56
|
});
|
|
58
|
-
|
|
57
|
+
export const createdAtDirective = new GraphQLDirective({
|
|
59
58
|
name: 'createdAt',
|
|
60
|
-
locations: [
|
|
59
|
+
locations: [DirectiveLocation.FIELD_DEFINITION],
|
|
61
60
|
description: 'Automatically sets timestamp on creation'
|
|
62
61
|
});
|
|
63
|
-
|
|
62
|
+
export const updatedAtDirective = new GraphQLDirective({
|
|
64
63
|
name: 'updatedAt',
|
|
65
|
-
locations: [
|
|
64
|
+
locations: [DirectiveLocation.FIELD_DEFINITION],
|
|
66
65
|
description: 'Automatically updates timestamp on modification'
|
|
67
66
|
});
|
|
68
|
-
|
|
67
|
+
export const embeddedDirective = new GraphQLDirective({
|
|
69
68
|
name: 'embedded',
|
|
70
|
-
locations: [
|
|
69
|
+
locations: [DirectiveLocation.OBJECT],
|
|
71
70
|
description: 'Marks a type as embedded document (not stored in separate collection)'
|
|
72
71
|
});
|
|
73
|
-
|
|
72
|
+
export const hideDirective = new GraphQLDirective({
|
|
74
73
|
name: 'hide',
|
|
75
|
-
locations: [
|
|
74
|
+
locations: [DirectiveLocation.FIELD_DEFINITION],
|
|
76
75
|
description: 'Excludes field from query results by default. Can be explicitly selected via select option.'
|
|
77
76
|
});
|
|
78
77
|
// Экспорт всех директив
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
78
|
+
export const lenzDirectives = [
|
|
79
|
+
modelDirective,
|
|
80
|
+
idDirective,
|
|
81
|
+
uniqueDirective,
|
|
82
|
+
indexDirective,
|
|
83
|
+
defaultDirective,
|
|
84
|
+
relationDirective,
|
|
85
|
+
createdAtDirective,
|
|
86
|
+
updatedAtDirective,
|
|
87
|
+
embeddedDirective,
|
|
88
|
+
hideDirective
|
|
90
89
|
];
|
|
91
90
|
// Утилита для проверки, является ли директива директивой Lenz
|
|
92
|
-
function isLenzDirective(directiveName) {
|
|
93
|
-
return
|
|
91
|
+
export function isLenzDirective(directiveName) {
|
|
92
|
+
return lenzDirectives.some(d => d.name === directiveName);
|
|
94
93
|
}
|
|
95
94
|
// Утилита для получения определения директивы по имени
|
|
96
|
-
function getDirectiveDefinition(directiveName) {
|
|
97
|
-
return
|
|
95
|
+
export function getDirectiveDefinition(directiveName) {
|
|
96
|
+
return lenzDirectives.find(d => d.name === directiveName);
|
|
98
97
|
}
|
|
99
98
|
//# sourceMappingURL=directives.js.map
|