@bairock/lenz 0.0.14 → 0.0.16

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 (120) hide show
  1. package/README.md +119 -8
  2. package/dist/cli/commands/generate.d.ts.map +1 -1
  3. package/dist/cli/commands/generate.js +66 -79
  4. package/dist/cli/commands/generate.js.map +1 -1
  5. package/dist/cli/commands/init.d.ts.map +1 -1
  6. package/dist/cli/commands/init.js +22 -30
  7. package/dist/cli/commands/init.js.map +1 -1
  8. package/dist/cli/commands/studio.js +15 -21
  9. package/dist/cli/commands/studio.js.map +1 -1
  10. package/dist/cli/index.js +11 -18
  11. package/dist/cli/index.js.map +1 -1
  12. package/dist/config/index.d.ts +4 -6
  13. package/dist/config/index.d.ts.map +1 -1
  14. package/dist/config/index.js +31 -15
  15. package/dist/config/index.js.map +1 -1
  16. package/dist/engine/CodeGenerator.d.ts +8 -28
  17. package/dist/engine/CodeGenerator.d.ts.map +1 -1
  18. package/dist/engine/CodeGenerator.js +26 -1935
  19. package/dist/engine/CodeGenerator.js.map +1 -1
  20. package/dist/engine/GraphQLParseHelpers.d.ts +25 -0
  21. package/dist/engine/GraphQLParseHelpers.d.ts.map +1 -0
  22. package/dist/engine/GraphQLParseHelpers.js +128 -0
  23. package/dist/engine/GraphQLParseHelpers.js.map +1 -0
  24. package/dist/engine/GraphQLParser.d.ts +23 -8
  25. package/dist/engine/GraphQLParser.d.ts.map +1 -1
  26. package/dist/engine/GraphQLParser.js +165 -248
  27. package/dist/engine/GraphQLParser.js.map +1 -1
  28. package/dist/engine/GraphQLRelationAnalyzer.d.ts +10 -0
  29. package/dist/engine/GraphQLRelationAnalyzer.d.ts.map +1 -0
  30. package/dist/engine/GraphQLRelationAnalyzer.js +117 -0
  31. package/dist/engine/GraphQLRelationAnalyzer.js.map +1 -0
  32. package/dist/engine/LenzEngine.d.ts +4 -4
  33. package/dist/engine/LenzEngine.d.ts.map +1 -1
  34. package/dist/engine/LenzEngine.js +59 -46
  35. package/dist/engine/LenzEngine.js.map +1 -1
  36. package/dist/engine/SchemaRelationValidator.d.ts +15 -0
  37. package/dist/engine/SchemaRelationValidator.d.ts.map +1 -0
  38. package/dist/engine/SchemaRelationValidator.js +133 -0
  39. package/dist/engine/SchemaRelationValidator.js.map +1 -0
  40. package/dist/engine/SchemaValidator.d.ts +12 -11
  41. package/dist/engine/SchemaValidator.d.ts.map +1 -1
  42. package/dist/engine/SchemaValidator.js +163 -169
  43. package/dist/engine/SchemaValidator.js.map +1 -1
  44. package/dist/engine/directives.d.ts +10 -0
  45. package/dist/engine/directives.d.ts.map +1 -1
  46. package/dist/engine/directives.js +192 -47
  47. package/dist/engine/directives.js.map +1 -1
  48. package/dist/engine/generators/ClientGenerator.d.ts +7 -0
  49. package/dist/engine/generators/ClientGenerator.d.ts.map +1 -0
  50. package/dist/engine/generators/ClientGenerator.js +386 -0
  51. package/dist/engine/generators/ClientGenerator.js.map +1 -0
  52. package/dist/engine/generators/DelegateGenerator.d.ts +9 -0
  53. package/dist/engine/generators/DelegateGenerator.d.ts.map +1 -0
  54. package/dist/engine/generators/DelegateGenerator.js +453 -0
  55. package/dist/engine/generators/DelegateGenerator.js.map +1 -0
  56. package/dist/engine/generators/DelegateHelpers.d.ts +7 -0
  57. package/dist/engine/generators/DelegateHelpers.d.ts.map +1 -0
  58. package/dist/engine/generators/DelegateHelpers.js +144 -0
  59. package/dist/engine/generators/DelegateHelpers.js.map +1 -0
  60. package/dist/engine/generators/DelegateRelations.d.ts +11 -0
  61. package/dist/engine/generators/DelegateRelations.d.ts.map +1 -0
  62. package/dist/engine/generators/DelegateRelations.js +794 -0
  63. package/dist/engine/generators/DelegateRelations.js.map +1 -0
  64. package/dist/engine/generators/DelegateTemplateBody.d.ts +8 -0
  65. package/dist/engine/generators/DelegateTemplateBody.d.ts.map +1 -0
  66. package/dist/engine/generators/DelegateTemplateBody.js +776 -0
  67. package/dist/engine/generators/DelegateTemplateBody.js.map +1 -0
  68. package/dist/engine/generators/GenerateRuntimeErrors.d.ts +2 -0
  69. package/dist/engine/generators/GenerateRuntimeErrors.d.ts.map +1 -0
  70. package/dist/engine/generators/GenerateRuntimeErrors.js +140 -0
  71. package/dist/engine/generators/GenerateRuntimeErrors.js.map +1 -0
  72. package/dist/engine/generators/GenerateRuntimeIndex.d.ts +2 -0
  73. package/dist/engine/generators/GenerateRuntimeIndex.d.ts.map +1 -0
  74. package/dist/engine/generators/GenerateRuntimeIndex.js +21 -0
  75. package/dist/engine/generators/GenerateRuntimeIndex.js.map +1 -0
  76. package/dist/engine/generators/GenerateRuntimeLogger.d.ts +2 -0
  77. package/dist/engine/generators/GenerateRuntimeLogger.d.ts.map +1 -0
  78. package/dist/engine/generators/GenerateRuntimeLogger.js +125 -0
  79. package/dist/engine/generators/GenerateRuntimeLogger.js.map +1 -0
  80. package/dist/engine/generators/GenerateRuntimePagination.d.ts +2 -0
  81. package/dist/engine/generators/GenerateRuntimePagination.d.ts.map +1 -0
  82. package/dist/engine/generators/GenerateRuntimePagination.js +159 -0
  83. package/dist/engine/generators/GenerateRuntimePagination.js.map +1 -0
  84. package/dist/engine/generators/GenerateRuntimeQuery.d.ts +2 -0
  85. package/dist/engine/generators/GenerateRuntimeQuery.d.ts.map +1 -0
  86. package/dist/engine/generators/GenerateRuntimeQuery.js +427 -0
  87. package/dist/engine/generators/GenerateRuntimeQuery.js.map +1 -0
  88. package/dist/engine/generators/GenerateRuntimeRelations.d.ts +2 -0
  89. package/dist/engine/generators/GenerateRuntimeRelations.d.ts.map +1 -0
  90. package/dist/engine/generators/GenerateRuntimeRelations.js +130 -0
  91. package/dist/engine/generators/GenerateRuntimeRelations.js.map +1 -0
  92. package/dist/engine/generators/RuntimeGenerator.d.ts +16 -0
  93. package/dist/engine/generators/RuntimeGenerator.d.ts.map +1 -0
  94. package/dist/engine/generators/RuntimeGenerator.js +16 -0
  95. package/dist/engine/generators/RuntimeGenerator.js.map +1 -0
  96. package/dist/engine/generators/TypeFilterTypes.d.ts +2 -0
  97. package/dist/engine/generators/TypeFilterTypes.d.ts.map +1 -0
  98. package/dist/engine/generators/TypeFilterTypes.js +220 -0
  99. package/dist/engine/generators/TypeFilterTypes.js.map +1 -0
  100. package/dist/engine/generators/TypeGenerator.d.ts +16 -0
  101. package/dist/engine/generators/TypeGenerator.d.ts.map +1 -0
  102. package/dist/engine/generators/TypeGenerator.js +493 -0
  103. package/dist/engine/generators/TypeGenerator.js.map +1 -0
  104. package/dist/engine/generators/helpers.d.ts +13 -0
  105. package/dist/engine/generators/helpers.d.ts.map +1 -0
  106. package/dist/engine/generators/helpers.js +316 -0
  107. package/dist/engine/generators/helpers.js.map +1 -0
  108. package/dist/engine/index.d.ts +3 -3
  109. package/dist/engine/index.d.ts.map +1 -1
  110. package/dist/engine/index.js +3 -9
  111. package/dist/engine/index.js.map +1 -1
  112. package/dist/errors/index.d.ts +3 -0
  113. package/dist/errors/index.d.ts.map +1 -1
  114. package/dist/errors/index.js +25 -32
  115. package/dist/errors/index.js.map +1 -1
  116. package/dist/index.d.ts +4 -5
  117. package/dist/index.d.ts.map +1 -1
  118. package/dist/index.js +10 -30
  119. package/dist/index.js.map +1 -1
  120. package/package.json +6 -7
@@ -1,21 +1,20 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GraphQLParser = void 0;
4
- const graphql_1 = require("graphql");
5
- const SchemaValidator_1 = require("./SchemaValidator");
6
- const errors_1 = require("../errors");
7
- const directives_1 = require("./directives");
8
- class GraphQLParser {
1
+ import { parse } from 'graphql';
2
+ import { SchemaValidator } from './SchemaValidator.js';
3
+ import { SchemaParseError } from '../errors/index.js';
4
+ import { lenzDirectives } from './directives.js';
5
+ import { GraphQLRelationAnalyzer } from './GraphQLRelationAnalyzer.js';
6
+ import { parseFieldType, parseRelationDirective, parseDefaultDirective, parseMapDirective, isModelType, getRelationField } from './GraphQLParseHelpers.js';
7
+ export class GraphQLParser {
9
8
  constructor(schemaSDL) {
10
9
  this.models = new Map();
11
10
  this.enums = new Map();
12
11
  this.relations = [];
13
12
  this.allModelNames = new Set();
14
13
  try {
15
- this.ast = (0, graphql_1.parse)(schemaSDL);
14
+ this.ast = parse(schemaSDL);
16
15
  // Проверка на определения директив Lenz в схеме (для обратной совместимости)
17
16
  const hasLenzDirectiveDefinitions = this.ast.definitions.some(def => def.kind === 'DirectiveDefinition' &&
18
- directives_1.lenzDirectives.some(d => d.name === def.name.value));
17
+ lenzDirectives.some(d => d.name === def.name.value));
19
18
  if (hasLenzDirectiveDefinitions) {
20
19
  console.warn('⚠️ Schema contains Lenz directive definitions. ' +
21
20
  'Directives are now defined in the library code. ' +
@@ -23,11 +22,12 @@ class GraphQLParser {
23
22
  }
24
23
  this.parseEnums();
25
24
  this.parseModels();
26
- this.analyzeRelationships();
25
+ const relationAnalyzer = new GraphQLRelationAnalyzer(this.models, this.relations);
26
+ relationAnalyzer.analyzeRelationships();
27
27
  }
28
28
  catch (error) {
29
29
  if (error instanceof Error) {
30
- throw new errors_1.SchemaParseError(`Failed to parse GraphQL schema: ${error.message}`, { originalError: error, schemaSDL });
30
+ throw new SchemaParseError(`Failed to parse GraphQL schema: ${error.message}`, { originalError: error, schemaSDL });
31
31
  }
32
32
  throw error;
33
33
  }
@@ -43,11 +43,17 @@ class GraphQLParser {
43
43
  }
44
44
  parseModels() {
45
45
  const objectTypes = this.ast.definitions.filter((def) => def.kind === 'ObjectTypeDefinition' &&
46
- !['Query', 'Mutation', 'Subscription'].includes(def.name.value));
46
+ !['Query', 'Mutation', 'Subscription'].includes(def.name.value) &&
47
+ ((def.directives?.some(d => d.name.value === 'model') ?? false) ||
48
+ (def.directives?.some(d => d.name.value === 'embedded') ?? false)));
47
49
  // Собираем имена всех моделей для определения отношений
50
+ // (не включаем embedded модели — на них не должно быть отношений)
48
51
  this.allModelNames.clear();
49
52
  for (const typeDef of objectTypes) {
50
- this.allModelNames.add(typeDef.name.value);
53
+ const dirs = typeDef.directives?.map(d => d.name.value) || [];
54
+ if (!dirs.includes('embedded')) {
55
+ this.allModelNames.add(typeDef.name.value);
56
+ }
51
57
  }
52
58
  for (const typeDef of objectTypes) {
53
59
  const modelName = typeDef.name.value;
@@ -57,10 +63,13 @@ class GraphQLParser {
57
63
  const isEmbedded = directives.includes('embedded');
58
64
  if (typeDef.fields) {
59
65
  for (const field of typeDef.fields) {
60
- const fieldType = this.parseFieldType(field.type);
66
+ const fieldType = parseFieldType(field.type);
61
67
  const fieldDirectives = field.directives?.map(d => d.name.value) || [];
62
- const isRelation = this.isModelType(fieldType.baseType);
63
- const relationData = this.parseRelationDirective(field);
68
+ const isRelation = !isEmbedded && isModelType(fieldType.baseType, this.allModelNames);
69
+ // ^ also skip isRelation check for embedded models themselves
70
+ const relationData = parseRelationDirective(field);
71
+ const defaultData = parseDefaultDirective(field);
72
+ const mapData = parseMapDirective(field);
64
73
  const graphQLField = {
65
74
  name: field.name.value,
66
75
  type: fieldType.baseType,
@@ -70,257 +79,166 @@ class GraphQLParser {
70
79
  isUnique: fieldDirectives.includes('unique'),
71
80
  isRelation,
72
81
  isHidden: fieldDirectives.includes('hide'),
82
+ isIgnored: fieldDirectives.includes('ignore'),
73
83
  directives: fieldDirectives,
74
- defaultValue: this.getDefaultValue(fieldDirectives, field),
75
- foreignKey: relationData.field ?? this.getRelationField(fieldDirectives, field),
76
- relationStrategy: relationData.strategy ?? 'populate',
77
- relationIndex: relationData.index ?? true
84
+ defaultValue: defaultData.value,
85
+ foreignKey: (relationData.field || undefined) ?? getRelationField(field),
86
+ relationStrategy: relationData.strategy, // leave undefined when not set; determineRelationType fills default
87
+ relationIndex: relationData.index ?? true,
88
+ onDelete: relationData.onDelete ?? 'NoAction',
89
+ onUpdate: relationData.onUpdate,
90
+ relationName: relationData.name,
78
91
  };
79
- fields.push(graphQLField);
80
- if (fieldDirectives.includes('unique')) {
81
- indexes.push({
82
- fields: [field.name.value],
83
- unique: true
84
- });
92
+ if (defaultData.generator) {
93
+ graphQLField.defaultGenerator = defaultData.generator;
85
94
  }
86
- if (fieldDirectives.includes('index')) {
87
- indexes.push({
88
- fields: [field.name.value],
89
- unique: false
90
- });
95
+ if (field.description?.value) {
96
+ graphQLField.description = field.description.value;
91
97
  }
92
- }
93
- }
94
- this.models.set(modelName, {
95
- name: modelName,
96
- fields,
97
- collectionName: isEmbedded ? '' : this.toCollectionName(modelName),
98
- relations: [],
99
- indexes,
100
- isEmbedded
101
- });
102
- }
103
- }
104
- parseFieldType(typeNode) {
105
- let current = typeNode;
106
- let isArray = false;
107
- let isRequired = false;
108
- while (true) {
109
- switch (current.kind) {
110
- case 'NonNullType':
111
- isRequired = true;
112
- current = current.type;
113
- break;
114
- case 'ListType':
115
- isArray = true;
116
- current = current.type;
117
- break;
118
- case 'NamedType':
119
- return {
120
- baseType: current.name.value,
121
- isArray,
122
- isRequired
123
- };
124
- }
125
- }
126
- }
127
- parseRelationDirective(fieldNode) {
128
- const result = {};
129
- const relationDirective = fieldNode.directives?.find(d => d.name.value === 'relation');
130
- if (relationDirective?.arguments) {
131
- for (const arg of relationDirective.arguments) {
132
- if (arg.name.value === 'field' && arg.value.kind === 'StringValue') {
133
- result.field = arg.value.value;
134
- }
135
- else if (arg.name.value === 'strategy' && arg.value.kind === 'StringValue') {
136
- if (arg.value.value === 'populate' || arg.value.value === 'lookup') {
137
- result.strategy = arg.value.value;
98
+ if (mapData) {
99
+ graphQLField.dbName = mapData;
138
100
  }
139
- }
140
- else if (arg.name.value === 'index' && arg.value.kind === 'BooleanValue') {
141
- result.index = arg.value.value;
142
- }
143
- }
144
- }
145
- return result;
146
- }
147
- isModelType(typeName) {
148
- // Проверяем по всем именам моделей (включая еще не обработанные)
149
- return this.allModelNames.has(typeName) || this.allModelNames.has(typeName.replace(/\[\]!/, ''));
150
- }
151
- getDefaultValue(directives, fieldNode) {
152
- // Пробуем извлечь значение из AST узла директивы (новый способ)
153
- if (fieldNode?.directives) {
154
- const defaultDirective = fieldNode.directives.find(d => d.name.value === 'default');
155
- if (defaultDirective?.arguments) {
156
- const valueArg = defaultDirective.arguments.find(arg => arg.name.value === 'value');
157
- if (valueArg?.value.kind === 'StringValue') {
158
- try {
159
- return JSON.parse(valueArg.value.value);
101
+ // Parse validation directives (parse regex pattern from AST)
102
+ const emailDir = field.directives?.find(d => d.name.value === 'email');
103
+ const urlDir = field.directives?.find(d => d.name.value === 'url');
104
+ const regexDir = field.directives?.find(d => d.name.value === 'regex');
105
+ if (emailDir || urlDir || regexDir) {
106
+ graphQLField.validationRules = {};
107
+ if (emailDir)
108
+ graphQLField.validationRules.email = true;
109
+ if (urlDir)
110
+ graphQLField.validationRules.url = true;
111
+ if (regexDir) {
112
+ const patternArg = regexDir.arguments?.find(a => a.name.value === 'pattern');
113
+ if (patternArg?.value.kind === 'StringValue') {
114
+ try {
115
+ new RegExp(patternArg.value.value);
116
+ graphQLField.validationRules.regex = patternArg.value.value;
117
+ }
118
+ catch (e) {
119
+ throw new SchemaParseError(`Invalid regex pattern in @regex on field '${modelName}.${field.name.value}': ${patternArg.value.value}`, { modelName, fieldName: field.name.value, pattern: patternArg.value.value });
120
+ }
121
+ }
122
+ }
160
123
  }
161
- catch {
162
- return valueArg.value.value;
124
+ // Parse @id(name, map) arguments
125
+ const idDir = field.directives?.find(d => d.name.value === 'id');
126
+ if (idDir?.arguments) {
127
+ const idNameArg = idDir.arguments.find(a => a.name.value === 'name');
128
+ if (idNameArg?.value.kind === 'StringValue')
129
+ graphQLField.idName = idNameArg.value.value;
130
+ const idMapArg = idDir.arguments.find(a => a.name.value === 'map');
131
+ if (idMapArg?.value.kind === 'StringValue')
132
+ graphQLField.idMap = idMapArg.value.value;
133
+ }
134
+ // Parse @unique(name, map) arguments
135
+ const uniqDir = field.directives?.find(d => d.name.value === 'unique');
136
+ if (uniqDir?.arguments) {
137
+ const uniqNameArg = uniqDir.arguments.find(a => a.name.value === 'name');
138
+ if (uniqNameArg?.value.kind === 'StringValue')
139
+ graphQLField.uniqueName = uniqNameArg.value.value;
140
+ const uniqMapArg = uniqDir.arguments.find(a => a.name.value === 'map');
141
+ if (uniqMapArg?.value.kind === 'StringValue')
142
+ graphQLField.uniqueMap = uniqMapArg.value.value;
143
+ }
144
+ fields.push(graphQLField);
145
+ if (!isEmbedded) {
146
+ if (fieldDirectives.includes('unique') && !fieldDirectives.includes('id') && !fieldDirectives.includes('ignore') && !graphQLField.isRelation) {
147
+ const uniqueIdx = {
148
+ fields: [field.name.value],
149
+ unique: true
150
+ };
151
+ if (graphQLField.uniqueName)
152
+ uniqueIdx.name = graphQLField.uniqueName;
153
+ indexes.push(uniqueIdx);
154
+ }
155
+ if (fieldDirectives.includes('index') && !fieldDirectives.includes('ignore') && !graphQLField.isRelation) {
156
+ indexes.push({
157
+ fields: [field.name.value],
158
+ unique: false
159
+ });
160
+ }
163
161
  }
164
162
  }
165
163
  }
166
- }
167
- // Fallback для обратной совместимости (старый способ через регулярное выражение)
168
- const defaultDirective = directives.find(d => d.startsWith('default'));
169
- if (defaultDirective) {
170
- // Извлекаем значение из директивы @default(value: "...")
171
- const match = defaultDirective.match(/default\(value:\s*"([^"]+)"\)/);
172
- if (match) {
173
- const value = match[1];
174
- try {
175
- return JSON.parse(value);
176
- }
177
- catch {
178
- return value;
179
- }
180
- }
181
- }
182
- return undefined;
183
- }
184
- getRelationField(directives, fieldNode) {
185
- // Пробуем извлечь значение из AST узла директивы
186
- if (fieldNode?.directives) {
187
- const relationDirective = fieldNode.directives.find(d => d.name.value === 'relation');
188
- if (relationDirective?.arguments) {
189
- const fieldArg = relationDirective.arguments.find(arg => arg.name.value === 'field');
190
- if (fieldArg?.value.kind === 'StringValue') {
191
- return fieldArg.value.value;
192
- }
193
- }
194
- }
195
- // Fallback для обратной совместимости (старый способ через регулярное выражение)
196
- const relationDirective = directives.find(d => d.startsWith('relation'));
197
- if (relationDirective) {
198
- // Извлекаем значение из директивы @relation(field: "...")
199
- const match = relationDirective.match(/relation\(field:\s*"([^"]+)"\)/);
200
- if (match) {
201
- return match[1];
202
- }
203
- }
204
- return undefined;
205
- }
206
- analyzeRelationships() {
207
- for (const [modelName, model] of this.models) {
208
- // Пропускаем embedded модели для анализа отношений
209
- if (model.isEmbedded)
210
- continue;
211
- for (const field of model.fields) {
212
- if (field.isRelation && this.models.has(field.type)) {
213
- const targetModel = this.models.get(field.type);
214
- // Пропускаем отношения с embedded моделями
215
- if (targetModel?.isEmbedded)
216
- continue;
217
- const relation = this.determineRelationType(modelName, field);
218
- if (relation) {
219
- model.relations.push(relation);
220
- this.relations.push(relation);
221
- // Add index for foreign key field if relation.index is true
222
- if (relation.index && relation.foreignKey && relation.foreignKeyLocation === 'source') {
223
- // Check if index already exists for this field
224
- const existingIndex = model.indexes.find(idx => idx.fields.length === 1 && idx.fields[0] === relation.foreignKey);
225
- if (!existingIndex) {
226
- model.indexes.push({
227
- fields: [relation.foreignKey],
228
- unique: false,
229
- sparse: relation.type === 'oneToOne' || relation.type === 'manyToOne' ? true : false
230
- });
164
+ // Parse compound directives (@@index, @@unique, @@id) from object-level directives
165
+ if (!isEmbedded && typeDef.directives) {
166
+ for (const dir of typeDef.directives) {
167
+ const dirName = dir.name.value;
168
+ if (dirName === 'compoundUnique' || dirName === 'compoundIndex' || dirName === 'compoundId') {
169
+ const fieldsArg = dir.arguments?.find(a => a.name.value === 'fields');
170
+ if (fieldsArg && fieldsArg.value.kind === 'ListValue') {
171
+ const fieldNames = fieldsArg.value.values
172
+ .filter(v => v.kind === 'StringValue')
173
+ .map(v => v.value);
174
+ if (fieldNames.length > 0) {
175
+ const nameArg = dir.arguments?.find(a => a.name.value === 'name');
176
+ const indexEntry = {
177
+ fields: fieldNames,
178
+ unique: dirName === 'compoundUnique' || dirName === 'compoundId'
179
+ };
180
+ if (nameArg?.value.kind === 'StringValue') {
181
+ indexEntry.name = nameArg.value.value;
182
+ }
183
+ indexes.push(indexEntry);
231
184
  }
232
185
  }
233
186
  }
234
187
  }
235
188
  }
236
- }
237
- }
238
- getJoinCollectionName(model1, model2) {
239
- // Сортируем имена моделей лексикографически для консистентности
240
- const [first, second] = [model1.toLowerCase(), model2.toLowerCase()].sort();
241
- return `${first}_${second}`;
242
- }
243
- determineRelationType(modelName, field) {
244
- const targetModel = this.models.get(field.type);
245
- if (!targetModel)
246
- return null;
247
- // Определяем тип отношения на основе структуры поля
248
- let relationType;
249
- let foreignKey = field.foreignKey;
250
- let foreignKeyLocation = 'source';
251
- let joinCollection = undefined;
252
- if (field.isArray) {
253
- // Массив может быть oneToMany или manyToMany
254
- if (foreignKey && foreignKey.endsWith('Ids')) {
255
- // Проверяем обратное поле в target модели, чтобы определить oneToMany vs manyToMany
256
- const reverseField = targetModel.fields.find(f => f.isRelation && f.type === modelName);
257
- if (reverseField && reverseField.isArray) {
258
- // Обратное поле также массив → manyToMany
259
- relationType = 'manyToMany';
260
- }
261
- else {
262
- // Обратное поле не массив или не найдено → oneToMany
263
- relationType = 'oneToMany';
189
+ // Parse @@fulltext directive (object-level)
190
+ let fulltextFields = [];
191
+ if (!isEmbedded && typeDef.directives) {
192
+ const fulltextDir = typeDef.directives.find(d => d.name.value === 'fulltext');
193
+ if (fulltextDir?.arguments) {
194
+ const fieldsArg = fulltextDir.arguments.find(a => a.name.value === 'fields');
195
+ if (fieldsArg?.value.kind === 'ListValue') {
196
+ fulltextFields = fieldsArg.value.values
197
+ .filter(v => v.kind === 'StringValue')
198
+ .map(v => v.value);
199
+ }
264
200
  }
265
201
  }
266
- else {
267
- relationType = 'manyToMany';
268
- // Если foreignKey не указан, используем join-коллекцию
269
- if (!foreignKey) {
270
- joinCollection = this.getJoinCollectionName(modelName, field.type);
202
+ // Also collect field-level @fulltext directives
203
+ if (!isEmbedded) {
204
+ for (const field of typeDef.fields || []) {
205
+ if (field.directives?.some(d => d.name.value === 'fulltext')) {
206
+ if (!fulltextFields.includes(field.name.value)) {
207
+ fulltextFields.push(field.name.value);
208
+ }
209
+ }
271
210
  }
272
- // foreignKey остается как есть (может быть указан для массива ID)
273
211
  }
274
- }
275
- else {
276
- // Одиночное поле - manyToOne или oneToOne
277
- relationType = foreignKey && foreignKey.endsWith('Id') ? 'manyToOne' : 'oneToOne';
278
- }
279
- // Автоматическая генерация foreign key если не указан
280
- if (!foreignKey && relationType !== 'manyToMany') {
281
- if (relationType === 'oneToMany') {
282
- foreignKey = `${targetModel.name.toLowerCase()}Ids`;
212
+ // Extract @@map/@modelMap directive for collection name override
213
+ let collectionName = isEmbedded ? '' : this.toCollectionName(modelName);
214
+ if (!isEmbedded && typeDef.directives) {
215
+ const mapDir = typeDef.directives.find(d => d.name.value === 'modelMap' || d.name.value === 'map');
216
+ if (mapDir?.arguments) {
217
+ const nameArg = mapDir.arguments.find(a => a.name.value === 'name');
218
+ if (nameArg?.value.kind === 'StringValue') {
219
+ collectionName = nameArg.value.value;
220
+ }
221
+ }
283
222
  }
284
- else {
285
- // manyToOne или oneToOne
286
- foreignKey = `${targetModel.name.toLowerCase()}Id`;
223
+ const modelData = {
224
+ name: modelName,
225
+ fields,
226
+ collectionName,
227
+ relations: [],
228
+ indexes,
229
+ isEmbedded,
230
+ directives
231
+ };
232
+ if (fulltextFields.length > 0) {
233
+ modelData.fulltextFields = fulltextFields;
287
234
  }
288
- }
289
- // Автоматическое определение стратегии по умолчанию на основе типа отношения
290
- let defaultStrategy = 'populate';
291
- if (relationType === 'oneToMany') {
292
- // Двусторонние связи с массивами ID (например, Author.bookIds) используют lookup
293
- defaultStrategy = 'lookup';
294
- }
295
- else if (relationType === 'manyToMany') {
296
- // manyToMany: если указан foreignKey (массив ID), используем lookup, иначе populate (join-коллекция)
297
- defaultStrategy = foreignKey ? 'lookup' : 'populate';
298
- }
299
- // manyToOne и oneToOne используют populate по умолчанию
300
- // Определяем, является ли foreign key массивом
301
- let isForeignKeyArray = false;
302
- if (foreignKey) {
303
- const sourceModel = this.models.get(modelName);
304
- if (sourceModel) {
305
- const foreignKeyField = sourceModel.fields.find(f => f.name === foreignKey);
306
- if (foreignKeyField) {
307
- isForeignKeyArray = foreignKeyField.isArray;
308
- }
235
+ if (typeDef.description?.value) {
236
+ modelData.description = typeDef.description.value;
309
237
  }
238
+ this.models.set(modelName, modelData);
310
239
  }
311
- const relation = {
312
- type: relationType,
313
- field: field.name,
314
- target: field.type,
315
- foreignKey,
316
- foreignKeyLocation,
317
- joinCollection,
318
- strategy: field.relationStrategy ?? defaultStrategy,
319
- index: field.relationIndex ?? true,
320
- isForeignKeyArray
321
- };
322
- return relation;
323
240
  }
241
+ // Remaining methods: toCollectionName, getters, validate
324
242
  toCollectionName(modelName) {
325
243
  return modelName.toLowerCase() + 's';
326
244
  }
@@ -354,10 +272,10 @@ class GraphQLParser {
354
272
  * @throws {SchemaValidationError} If schema validation fails
355
273
  */
356
274
  validate() {
357
- const validator = new SchemaValidator_1.SchemaValidator(this.getModels(), this.getEnums(), this.getRelations());
275
+ const validator = new SchemaValidator(this.getModels(), this.getEnums(), this.getRelations());
358
276
  validator.validate({
359
277
  validateRelations: true,
360
- checkCircularDependencies: false // Disabled because circular dependencies are allowed in relationships
278
+ checkCircularDependencies: true
361
279
  });
362
280
  // Log warnings
363
281
  const warnings = validator.getWarnings();
@@ -367,5 +285,4 @@ class GraphQLParser {
367
285
  }
368
286
  }
369
287
  }
370
- exports.GraphQLParser = GraphQLParser;
371
288
  //# sourceMappingURL=GraphQLParser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GraphQLParser.js","sourceRoot":"","sources":["../../src/engine/GraphQLParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GraphQLParser.js","sourceRoot":"","sources":["../../src/engine/GraphQLParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { GraphQLModel, ModelRelation } from './GraphQLParser.js';
2
+ export declare class GraphQLRelationAnalyzer {
3
+ private models;
4
+ private relations;
5
+ constructor(models: Map<string, GraphQLModel>, relations: ModelRelation[]);
6
+ analyzeRelationships(): void;
7
+ private getJoinCollectionName;
8
+ private determineRelationType;
9
+ }
10
+ //# sourceMappingURL=GraphQLRelationAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphQLRelationAnalyzer.d.ts","sourceRoot":"","sources":["../../src/engine/GraphQLRelationAnalyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAgB,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAG/E,qBAAa,uBAAuB;IAEhC,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;gBADT,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EACjC,SAAS,EAAE,aAAa,EAAE;IAGpC,oBAAoB,IAAI,IAAI;IAqC5B,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,qBAAqB;CA2E9B"}