@bairock/lenz 0.0.15 → 0.0.17

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 (134) hide show
  1. package/README.md +195 -19
  2. package/dist/cli/commands/generate/crud.d.ts +3 -0
  3. package/dist/cli/commands/generate/crud.d.ts.map +1 -0
  4. package/dist/cli/commands/generate/crud.js +123 -0
  5. package/dist/cli/commands/generate/crud.js.map +1 -0
  6. package/dist/cli/commands/generate/index.d.ts +3 -0
  7. package/dist/cli/commands/generate/index.d.ts.map +1 -0
  8. package/dist/cli/commands/generate/index.js +8 -0
  9. package/dist/cli/commands/generate/index.js.map +1 -0
  10. package/dist/cli/commands/generate/orm.d.ts +3 -0
  11. package/dist/cli/commands/generate/orm.d.ts.map +1 -0
  12. package/dist/cli/commands/generate/orm.js +107 -0
  13. package/dist/cli/commands/generate/orm.js.map +1 -0
  14. package/dist/cli/commands/generate.d.ts.map +1 -1
  15. package/dist/cli/commands/generate.js +34 -8
  16. package/dist/cli/commands/generate.js.map +1 -1
  17. package/dist/cli/commands/init.d.ts.map +1 -1
  18. package/dist/cli/commands/init.js +0 -2
  19. package/dist/cli/commands/init.js.map +1 -1
  20. package/dist/cli/index.js +1 -3
  21. package/dist/cli/index.js.map +1 -1
  22. package/dist/config/index.d.ts +4 -6
  23. package/dist/config/index.d.ts.map +1 -1
  24. package/dist/config/index.js +24 -3
  25. package/dist/config/index.js.map +1 -1
  26. package/dist/engine/CodeGenerator.d.ts +8 -28
  27. package/dist/engine/CodeGenerator.d.ts.map +1 -1
  28. package/dist/engine/CodeGenerator.js +28 -1969
  29. package/dist/engine/CodeGenerator.js.map +1 -1
  30. package/dist/engine/GraphQLParseHelpers.d.ts +25 -0
  31. package/dist/engine/GraphQLParseHelpers.d.ts.map +1 -0
  32. package/dist/engine/GraphQLParseHelpers.js +128 -0
  33. package/dist/engine/GraphQLParseHelpers.js.map +1 -0
  34. package/dist/engine/GraphQLParser.d.ts +23 -10
  35. package/dist/engine/GraphQLParser.d.ts.map +1 -1
  36. package/dist/engine/GraphQLParser.js +154 -240
  37. package/dist/engine/GraphQLParser.js.map +1 -1
  38. package/dist/engine/GraphQLRelationAnalyzer.d.ts +10 -0
  39. package/dist/engine/GraphQLRelationAnalyzer.d.ts.map +1 -0
  40. package/dist/engine/GraphQLRelationAnalyzer.js +117 -0
  41. package/dist/engine/GraphQLRelationAnalyzer.js.map +1 -0
  42. package/dist/engine/LenzEngine.d.ts +1 -1
  43. package/dist/engine/LenzEngine.d.ts.map +1 -1
  44. package/dist/engine/LenzEngine.js +33 -13
  45. package/dist/engine/LenzEngine.js.map +1 -1
  46. package/dist/engine/SchemaRelationValidator.d.ts +15 -0
  47. package/dist/engine/SchemaRelationValidator.d.ts.map +1 -0
  48. package/dist/engine/SchemaRelationValidator.js +133 -0
  49. package/dist/engine/SchemaRelationValidator.js.map +1 -0
  50. package/dist/engine/SchemaValidator.d.ts +11 -10
  51. package/dist/engine/SchemaValidator.d.ts.map +1 -1
  52. package/dist/engine/SchemaValidator.js +151 -169
  53. package/dist/engine/SchemaValidator.js.map +1 -1
  54. package/dist/engine/directives.d.ts +10 -0
  55. package/dist/engine/directives.d.ts.map +1 -1
  56. package/dist/engine/directives.js +152 -6
  57. package/dist/engine/directives.js.map +1 -1
  58. package/dist/engine/generators/ClientGenerator.d.ts +7 -0
  59. package/dist/engine/generators/ClientGenerator.d.ts.map +1 -0
  60. package/dist/engine/generators/ClientGenerator.js +386 -0
  61. package/dist/engine/generators/ClientGenerator.js.map +1 -0
  62. package/dist/engine/generators/CrudModuleGenerator.d.ts +10 -0
  63. package/dist/engine/generators/CrudModuleGenerator.d.ts.map +1 -0
  64. package/dist/engine/generators/CrudModuleGenerator.js +141 -0
  65. package/dist/engine/generators/CrudModuleGenerator.js.map +1 -0
  66. package/dist/engine/generators/DelegateGenerator.d.ts +9 -0
  67. package/dist/engine/generators/DelegateGenerator.d.ts.map +1 -0
  68. package/dist/engine/generators/DelegateGenerator.js +453 -0
  69. package/dist/engine/generators/DelegateGenerator.js.map +1 -0
  70. package/dist/engine/generators/DelegateHelpers.d.ts +7 -0
  71. package/dist/engine/generators/DelegateHelpers.d.ts.map +1 -0
  72. package/dist/engine/generators/DelegateHelpers.js +144 -0
  73. package/dist/engine/generators/DelegateHelpers.js.map +1 -0
  74. package/dist/engine/generators/DelegateRelations.d.ts +11 -0
  75. package/dist/engine/generators/DelegateRelations.d.ts.map +1 -0
  76. package/dist/engine/generators/DelegateRelations.js +794 -0
  77. package/dist/engine/generators/DelegateRelations.js.map +1 -0
  78. package/dist/engine/generators/DelegateTemplateBody.d.ts +8 -0
  79. package/dist/engine/generators/DelegateTemplateBody.d.ts.map +1 -0
  80. package/dist/engine/generators/DelegateTemplateBody.js +776 -0
  81. package/dist/engine/generators/DelegateTemplateBody.js.map +1 -0
  82. package/dist/engine/generators/GenerateRuntimeErrors.d.ts +2 -0
  83. package/dist/engine/generators/GenerateRuntimeErrors.d.ts.map +1 -0
  84. package/dist/engine/generators/GenerateRuntimeErrors.js +140 -0
  85. package/dist/engine/generators/GenerateRuntimeErrors.js.map +1 -0
  86. package/dist/engine/generators/GenerateRuntimeIndex.d.ts +2 -0
  87. package/dist/engine/generators/GenerateRuntimeIndex.d.ts.map +1 -0
  88. package/dist/engine/generators/GenerateRuntimeIndex.js +21 -0
  89. package/dist/engine/generators/GenerateRuntimeIndex.js.map +1 -0
  90. package/dist/engine/generators/GenerateRuntimeLogger.d.ts +2 -0
  91. package/dist/engine/generators/GenerateRuntimeLogger.d.ts.map +1 -0
  92. package/dist/engine/generators/GenerateRuntimeLogger.js +125 -0
  93. package/dist/engine/generators/GenerateRuntimeLogger.js.map +1 -0
  94. package/dist/engine/generators/GenerateRuntimePagination.d.ts +2 -0
  95. package/dist/engine/generators/GenerateRuntimePagination.d.ts.map +1 -0
  96. package/dist/engine/generators/GenerateRuntimePagination.js +159 -0
  97. package/dist/engine/generators/GenerateRuntimePagination.js.map +1 -0
  98. package/dist/engine/generators/GenerateRuntimeQuery.d.ts +2 -0
  99. package/dist/engine/generators/GenerateRuntimeQuery.d.ts.map +1 -0
  100. package/dist/engine/generators/GenerateRuntimeQuery.js +427 -0
  101. package/dist/engine/generators/GenerateRuntimeQuery.js.map +1 -0
  102. package/dist/engine/generators/GenerateRuntimeRelations.d.ts +2 -0
  103. package/dist/engine/generators/GenerateRuntimeRelations.d.ts.map +1 -0
  104. package/dist/engine/generators/GenerateRuntimeRelations.js +130 -0
  105. package/dist/engine/generators/GenerateRuntimeRelations.js.map +1 -0
  106. package/dist/engine/generators/RuntimeGenerator.d.ts +16 -0
  107. package/dist/engine/generators/RuntimeGenerator.d.ts.map +1 -0
  108. package/dist/engine/generators/RuntimeGenerator.js +16 -0
  109. package/dist/engine/generators/RuntimeGenerator.js.map +1 -0
  110. package/dist/engine/generators/SDLInputTypesGenerator.d.ts +6 -0
  111. package/dist/engine/generators/SDLInputTypesGenerator.d.ts.map +1 -0
  112. package/dist/engine/generators/SDLInputTypesGenerator.js +763 -0
  113. package/dist/engine/generators/SDLInputTypesGenerator.js.map +1 -0
  114. package/dist/engine/generators/TypeFilterTypes.d.ts +2 -0
  115. package/dist/engine/generators/TypeFilterTypes.d.ts.map +1 -0
  116. package/dist/engine/generators/TypeFilterTypes.js +220 -0
  117. package/dist/engine/generators/TypeFilterTypes.js.map +1 -0
  118. package/dist/engine/generators/TypeGenerator.d.ts +16 -0
  119. package/dist/engine/generators/TypeGenerator.d.ts.map +1 -0
  120. package/dist/engine/generators/TypeGenerator.js +493 -0
  121. package/dist/engine/generators/TypeGenerator.js.map +1 -0
  122. package/dist/engine/generators/helpers.d.ts +13 -0
  123. package/dist/engine/generators/helpers.d.ts.map +1 -0
  124. package/dist/engine/generators/helpers.js +316 -0
  125. package/dist/engine/generators/helpers.js.map +1 -0
  126. package/dist/errors/index.d.ts +3 -0
  127. package/dist/errors/index.d.ts.map +1 -1
  128. package/dist/errors/index.js +11 -1
  129. package/dist/errors/index.js.map +1 -1
  130. package/dist/index.d.ts +0 -1
  131. package/dist/index.d.ts.map +1 -1
  132. package/dist/index.js +2 -4
  133. package/dist/index.js.map +1 -1
  134. package/package.json +10 -4
@@ -2,6 +2,8 @@ import { parse } from 'graphql';
2
2
  import { SchemaValidator } from './SchemaValidator.js';
3
3
  import { SchemaParseError } from '../errors/index.js';
4
4
  import { lenzDirectives } from './directives.js';
5
+ import { GraphQLRelationAnalyzer } from './GraphQLRelationAnalyzer.js';
6
+ import { parseFieldType, parseRelationDirective, parseDefaultDirective, parseMapDirective, isModelType, getRelationField } from './GraphQLParseHelpers.js';
5
7
  export class GraphQLParser {
6
8
  constructor(schemaSDL) {
7
9
  this.models = new Map();
@@ -20,7 +22,8 @@ export class GraphQLParser {
20
22
  }
21
23
  this.parseEnums();
22
24
  this.parseModels();
23
- this.analyzeRelationships();
25
+ const relationAnalyzer = new GraphQLRelationAnalyzer(this.models, this.relations);
26
+ relationAnalyzer.analyzeRelationships();
24
27
  }
25
28
  catch (error) {
26
29
  if (error instanceof Error) {
@@ -40,11 +43,17 @@ export class GraphQLParser {
40
43
  }
41
44
  parseModels() {
42
45
  const objectTypes = this.ast.definitions.filter((def) => def.kind === 'ObjectTypeDefinition' &&
43
- !['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)));
44
49
  // Собираем имена всех моделей для определения отношений
50
+ // (не включаем embedded модели — на них не должно быть отношений)
45
51
  this.allModelNames.clear();
46
52
  for (const typeDef of objectTypes) {
47
- 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
+ }
48
57
  }
49
58
  for (const typeDef of objectTypes) {
50
59
  const modelName = typeDef.name.value;
@@ -54,10 +63,13 @@ export class GraphQLParser {
54
63
  const isEmbedded = directives.includes('embedded');
55
64
  if (typeDef.fields) {
56
65
  for (const field of typeDef.fields) {
57
- const fieldType = this.parseFieldType(field.type);
66
+ const fieldType = parseFieldType(field.type);
58
67
  const fieldDirectives = field.directives?.map(d => d.name.value) || [];
59
- const isRelation = this.isModelType(fieldType.baseType);
60
- 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);
61
73
  const graphQLField = {
62
74
  name: field.name.value,
63
75
  type: fieldType.baseType,
@@ -67,264 +79,166 @@ export class GraphQLParser {
67
79
  isUnique: fieldDirectives.includes('unique'),
68
80
  isRelation,
69
81
  isHidden: fieldDirectives.includes('hide'),
82
+ isIgnored: fieldDirectives.includes('ignore'),
70
83
  directives: fieldDirectives,
71
- defaultValue: this.getDefaultValue(fieldDirectives, field),
72
- foreignKey: relationData.field ?? this.getRelationField(fieldDirectives, field),
73
- relationStrategy: relationData.strategy ?? 'populate',
84
+ defaultValue: defaultData.value,
85
+ foreignKey: (relationData.field || undefined) ?? getRelationField(field),
86
+ relationStrategy: relationData.strategy, // leave undefined when not set; determineRelationType fills default
74
87
  relationIndex: relationData.index ?? true,
75
- onDelete: relationData.onDelete ?? 'NoAction'
88
+ onDelete: relationData.onDelete ?? 'NoAction',
89
+ onUpdate: relationData.onUpdate,
90
+ relationName: relationData.name,
76
91
  };
77
- fields.push(graphQLField);
78
- if (fieldDirectives.includes('unique')) {
79
- indexes.push({
80
- fields: [field.name.value],
81
- unique: true
82
- });
92
+ if (defaultData.generator) {
93
+ graphQLField.defaultGenerator = defaultData.generator;
83
94
  }
84
- if (fieldDirectives.includes('index')) {
85
- indexes.push({
86
- fields: [field.name.value],
87
- unique: false
88
- });
95
+ if (field.description?.value) {
96
+ graphQLField.description = field.description.value;
89
97
  }
90
- }
91
- }
92
- this.models.set(modelName, {
93
- name: modelName,
94
- fields,
95
- collectionName: isEmbedded ? '' : this.toCollectionName(modelName),
96
- relations: [],
97
- indexes,
98
- isEmbedded
99
- });
100
- }
101
- }
102
- parseFieldType(typeNode) {
103
- let current = typeNode;
104
- let isArray = false;
105
- let isRequired = false;
106
- while (true) {
107
- switch (current.kind) {
108
- case 'NonNullType':
109
- isRequired = true;
110
- current = current.type;
111
- break;
112
- case 'ListType':
113
- isArray = true;
114
- current = current.type;
115
- break;
116
- case 'NamedType':
117
- return {
118
- baseType: current.name.value,
119
- isArray,
120
- isRequired
121
- };
122
- }
123
- }
124
- }
125
- parseRelationDirective(fieldNode) {
126
- const result = { onDelete: 'NoAction' };
127
- const relationDirective = fieldNode.directives?.find(d => d.name.value === 'relation');
128
- if (relationDirective?.arguments) {
129
- for (const arg of relationDirective.arguments) {
130
- if (arg.name.value === 'field' && arg.value.kind === 'StringValue') {
131
- result.field = arg.value.value;
132
- }
133
- else if (arg.name.value === 'strategy' && arg.value.kind === 'StringValue') {
134
- if (arg.value.value === 'populate' || arg.value.value === 'lookup') {
135
- result.strategy = arg.value.value;
98
+ if (mapData) {
99
+ graphQLField.dbName = mapData;
136
100
  }
137
- }
138
- else if (arg.name.value === 'index' && arg.value.kind === 'BooleanValue') {
139
- result.index = arg.value.value;
140
- }
141
- else if (arg.name.value === 'onDelete' && arg.value.kind === 'StringValue') {
142
- if (arg.value.value === 'Cascade' || arg.value.value === 'SetNull' || arg.value.value === 'NoAction') {
143
- result.onDelete = arg.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
+ }
144
123
  }
145
- }
146
- }
147
- }
148
- return result;
149
- }
150
- isModelType(typeName) {
151
- // Проверяем по всем именам моделей (включая еще не обработанные)
152
- return this.allModelNames.has(typeName) || this.allModelNames.has(typeName.replace(/\[\]!/, ''));
153
- }
154
- getDefaultValue(directives, fieldNode) {
155
- // Пробуем извлечь значение из AST узла директивы (новый способ)
156
- if (fieldNode?.directives) {
157
- const defaultDirective = fieldNode.directives.find(d => d.name.value === 'default');
158
- if (defaultDirective?.arguments) {
159
- const valueArg = defaultDirective.arguments.find(arg => arg.name.value === 'value');
160
- if (valueArg?.value.kind === 'StringValue') {
161
- try {
162
- return JSON.parse(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;
163
133
  }
164
- catch {
165
- return valueArg.value.value;
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
+ }
166
161
  }
167
162
  }
168
163
  }
169
- }
170
- // Fallback для обратной совместимости (старый способ через регулярное выражение)
171
- const defaultDirective = directives.find(d => d.startsWith('default'));
172
- if (defaultDirective) {
173
- // Извлекаем значение из директивы @default(value: "...")
174
- const match = defaultDirective.match(/default\(value:\s*"([^"]+)"\)/);
175
- if (match) {
176
- const value = match[1];
177
- try {
178
- return JSON.parse(value);
179
- }
180
- catch {
181
- return value;
182
- }
183
- }
184
- }
185
- return undefined;
186
- }
187
- getRelationField(directives, fieldNode) {
188
- // Пробуем извлечь значение из AST узла директивы
189
- if (fieldNode?.directives) {
190
- const relationDirective = fieldNode.directives.find(d => d.name.value === 'relation');
191
- if (relationDirective?.arguments) {
192
- const fieldArg = relationDirective.arguments.find(arg => arg.name.value === 'field');
193
- if (fieldArg?.value.kind === 'StringValue') {
194
- return fieldArg.value.value;
195
- }
196
- }
197
- }
198
- // Fallback для обратной совместимости (старый способ через регулярное выражение)
199
- const relationDirective = directives.find(d => d.startsWith('relation'));
200
- if (relationDirective) {
201
- // Извлекаем значение из директивы @relation(field: "...")
202
- const match = relationDirective.match(/relation\(field:\s*"([^"]+)"\)/);
203
- if (match) {
204
- return match[1];
205
- }
206
- }
207
- return undefined;
208
- }
209
- analyzeRelationships() {
210
- for (const [modelName, model] of this.models) {
211
- // Пропускаем embedded модели для анализа отношений
212
- if (model.isEmbedded)
213
- continue;
214
- for (const field of model.fields) {
215
- if (field.isRelation && this.models.has(field.type)) {
216
- const targetModel = this.models.get(field.type);
217
- // Пропускаем отношения с embedded моделями
218
- if (targetModel?.isEmbedded)
219
- continue;
220
- const relation = this.determineRelationType(modelName, field);
221
- if (relation) {
222
- model.relations.push(relation);
223
- this.relations.push(relation);
224
- // Add index for foreign key field if relation.index is true
225
- if (relation.index && relation.foreignKey && relation.foreignKeyLocation === 'source') {
226
- // Check if index already exists for this field
227
- const existingIndex = model.indexes.find(idx => idx.fields.length === 1 && idx.fields[0] === relation.foreignKey);
228
- if (!existingIndex) {
229
- model.indexes.push({
230
- fields: [relation.foreignKey],
231
- unique: false,
232
- sparse: relation.type === 'oneToOne' || relation.type === 'manyToOne' ? true : false
233
- });
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);
234
184
  }
235
185
  }
236
186
  }
237
187
  }
238
188
  }
239
- }
240
- }
241
- getJoinCollectionName(model1, model2) {
242
- // Сортируем имена моделей лексикографически для консистентности
243
- const [first, second] = [model1.toLowerCase(), model2.toLowerCase()].sort();
244
- return `${first}_${second}`;
245
- }
246
- determineRelationType(modelName, field) {
247
- const targetModel = this.models.get(field.type);
248
- if (!targetModel)
249
- return null;
250
- // Определяем тип отношения на основе структуры поля
251
- let relationType;
252
- let foreignKey = field.foreignKey;
253
- let foreignKeyLocation = 'source';
254
- let joinCollection = undefined;
255
- if (field.isArray) {
256
- // Массив может быть oneToMany или manyToMany
257
- if (foreignKey && foreignKey.endsWith('Ids')) {
258
- // Проверяем обратное поле в target модели, чтобы определить oneToMany vs manyToMany
259
- const reverseField = targetModel.fields.find(f => f.isRelation && f.type === modelName);
260
- if (reverseField && reverseField.isArray) {
261
- // Обратное поле также массив → manyToMany
262
- relationType = 'manyToMany';
263
- }
264
- else {
265
- // Обратное поле не массив или не найдено → oneToMany
266
- 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
+ }
267
200
  }
268
201
  }
269
- else {
270
- relationType = 'manyToMany';
271
- // Если foreignKey не указан, используем join-коллекцию
272
- if (!foreignKey) {
273
- 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
+ }
274
210
  }
275
- // foreignKey остается как есть (может быть указан для массива ID)
276
211
  }
277
- }
278
- else {
279
- // Одиночное поле - manyToOne или oneToOne
280
- relationType = foreignKey && foreignKey.endsWith('Id') ? 'manyToOne' : 'oneToOne';
281
- }
282
- // Автоматическая генерация foreign key если не указан
283
- if (!foreignKey && relationType !== 'manyToMany') {
284
- if (relationType === 'oneToMany') {
285
- 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
+ }
286
222
  }
287
- else {
288
- // manyToOne или oneToOne
289
- 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;
290
234
  }
291
- }
292
- // Автоматическое определение стратегии по умолчанию на основе типа отношения
293
- let defaultStrategy = 'populate';
294
- if (relationType === 'oneToMany') {
295
- // Двусторонние связи с массивами ID (например, Author.bookIds) используют lookup
296
- defaultStrategy = 'lookup';
297
- }
298
- else if (relationType === 'manyToMany') {
299
- // manyToMany: если указан foreignKey (массив ID), используем lookup, иначе populate (join-коллекция)
300
- defaultStrategy = foreignKey ? 'lookup' : 'populate';
301
- }
302
- // manyToOne и oneToOne используют populate по умолчанию
303
- // Определяем, является ли foreign key массивом
304
- let isForeignKeyArray = false;
305
- if (foreignKey) {
306
- const sourceModel = this.models.get(modelName);
307
- if (sourceModel) {
308
- const foreignKeyField = sourceModel.fields.find(f => f.name === foreignKey);
309
- if (foreignKeyField) {
310
- isForeignKeyArray = foreignKeyField.isArray;
311
- }
235
+ if (typeDef.description?.value) {
236
+ modelData.description = typeDef.description.value;
312
237
  }
238
+ this.models.set(modelName, modelData);
313
239
  }
314
- const relation = {
315
- type: relationType,
316
- field: field.name,
317
- target: field.type,
318
- foreignKey,
319
- foreignKeyLocation,
320
- joinCollection,
321
- strategy: field.relationStrategy ?? defaultStrategy,
322
- index: field.relationIndex ?? true,
323
- isForeignKeyArray,
324
- onDelete: field.onDelete ?? 'NoAction'
325
- };
326
- return relation;
327
240
  }
241
+ // Remaining methods: toCollectionName, getters, validate
328
242
  toCollectionName(modelName) {
329
243
  return modelName.toLowerCase() + 's';
330
244
  }
@@ -361,7 +275,7 @@ export class GraphQLParser {
361
275
  const validator = new SchemaValidator(this.getModels(), this.getEnums(), this.getRelations());
362
276
  validator.validate({
363
277
  validateRelations: true,
364
- checkCircularDependencies: false // Disabled because circular dependencies are allowed in relationships
278
+ checkCircularDependencies: true
365
279
  });
366
280
  // Log warnings
367
281
  const warnings = validator.getWarnings();
@@ -1 +1 @@
1
- {"version":3,"file":"GraphQLParser.js","sourceRoot":"","sources":["../../src/engine/GraphQLParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAiG,MAAM,SAAS,CAAC;AAC/H,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAsDjD,MAAM,OAAO,aAAa;IAOxB,YAAY,SAAiB;QALrB,WAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;QACzC,UAAK,GAAG,IAAI,GAAG,EAAuB,CAAC;QACvC,cAAS,GAAoB,EAAE,CAAC;QAChC,kBAAa,GAAG,IAAI,GAAG,EAAU,CAAC;QAGxC,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;YAE5B,6EAA6E;YAC7E,MAAM,2BAA2B,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAClE,GAAG,CAAC,IAAI,KAAK,qBAAqB;gBAClC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CACpD,CAAC;YAEF,IAAI,2BAA2B,EAAE,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,kDAAkD;oBAC7D,kDAAkD;oBAClD,oEAAoE,CAAC,CAAC;YAC1E,CAAC;YAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,gBAAgB,CACxB,mCAAmC,KAAK,CAAC,OAAO,EAAE,EAClD,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,CACpC,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,UAAU;QAChB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAC3C,CAAC,GAAG,EAAiC,EAAE,CACrC,GAAG,CAAC,IAAI,KAAK,oBAAoB,CACpC,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE;gBACjC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;gBACxB,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;aACrD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,WAAW;QACjB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAC7C,CAAC,GAAG,EAAmC,EAAE,CACvC,GAAG,CAAC,IAAI,KAAK,sBAAsB;YACnC,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAClE,CAAC;QAEF,wDAAwD;QACxD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YACrC,MAAM,MAAM,GAAmB,EAAE,CAAC;YAClC,MAAM,OAAO,GAAiB,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACpE,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAEnD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBACnC,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAClD,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBAEvE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBAExD,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;oBACxD,MAAM,YAAY,GAAiB;wBACjC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;wBACtB,IAAI,EAAE,SAAS,CAAC,QAAQ;wBACxB,OAAO,EAAE,SAAS,CAAC,OAAO;wBAC1B,UAAU,EAAE,SAAS,CAAC,UAAU;wBAChC,IAAI,EAAE,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI;wBACjE,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBAC5C,UAAU;wBACV,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC;wBAC1C,UAAU,EAAE,eAAe;wBAC3B,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,KAAK,CAAC;wBAC1D,UAAU,EAAE,YAAY,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,KAAK,CAAC;wBAC/E,gBAAgB,EAAE,YAAY,CAAC,QAAQ,IAAI,UAAU;wBACrD,aAAa,EAAE,YAAY,CAAC,KAAK,IAAI,IAAI;wBACzC,QAAQ,EAAE,YAAY,CAAC,QAAQ,IAAI,UAAU;qBAC9C,CAAC;oBAEF,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBAE1B,IAAI,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACvC,OAAO,CAAC,IAAI,CAAC;4BACX,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;4BAC1B,MAAM,EAAE,IAAI;yBACb,CAAC,CAAC;oBACL,CAAC;oBAED,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;wBACtC,OAAO,CAAC,IAAI,CAAC;4BACX,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;4BAC1B,MAAM,EAAE,KAAK;yBACd,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE;gBACzB,IAAI,EAAE,SAAS;gBACf,MAAM;gBACN,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;gBAClE,SAAS,EAAE,EAAE;gBACb,OAAO;gBACP,UAAU;aACX,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,QAAkB;QAKvC,IAAI,OAAO,GAAG,QAAQ,CAAC;QACvB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,UAAU,GAAG,KAAK,CAAC;QAEvB,OAAO,IAAI,EAAE,CAAC;YACZ,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,KAAK,aAAa;oBAChB,UAAU,GAAG,IAAI,CAAC;oBAClB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;oBACvB,MAAM;gBACR,KAAK,UAAU;oBACb,OAAO,GAAG,IAAI,CAAC;oBACf,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;oBACvB,MAAM;gBACR,KAAK,WAAW;oBACd,OAAO;wBACL,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;wBAC5B,OAAO;wBACP,UAAU;qBACX,CAAC;YACN,CAAC;QACH,CAAC;IACH,CAAC;IAEO,sBAAsB,CAAC,SAA8B;QAM3D,MAAM,MAAM,GAAwH,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;QAC7J,MAAM,iBAAiB,GAAG,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC;QACvF,IAAI,iBAAiB,EAAE,SAAS,EAAE,CAAC;YACjC,KAAK,MAAM,GAAG,IAAI,iBAAiB,CAAC,SAAS,EAAE,CAAC;gBAC9C,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBACnE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;gBACjC,CAAC;qBAAM,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,UAAU,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBAC7E,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,UAAU,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;wBACnE,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;oBACpC,CAAC;gBACH,CAAC;qBAAM,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBAC3E,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;gBACjC,CAAC;qBAAM,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,UAAU,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBAC7E,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;wBACrG,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;oBACpC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,WAAW,CAAC,QAAgB;QAClC,iEAAiE;QACjE,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACnG,CAAC;IAEO,eAAe,CAAC,UAAoB,EAAE,SAA+B;QAC3E,gEAAgE;QAChE,IAAI,SAAS,EAAE,UAAU,EAAE,CAAC;YAC1B,MAAM,gBAAgB,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;YACpF,IAAI,gBAAgB,EAAE,SAAS,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;gBACpF,IAAI,QAAQ,EAAE,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBAC3C,IAAI,CAAC;wBACH,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBAC1C,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;oBAC9B,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,iFAAiF;QACjF,MAAM,gBAAgB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QACvE,IAAI,gBAAgB,EAAE,CAAC;YACrB,yDAAyD;YACzD,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;YACtE,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,CAAC;oBACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC3B,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,gBAAgB,CAAC,UAAoB,EAAE,SAA+B;QAC5E,iDAAiD;QACjD,IAAI,SAAS,EAAE,UAAU,EAAE,CAAC;YAC1B,MAAM,iBAAiB,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC;YACtF,IAAI,iBAAiB,EAAE,SAAS,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;gBACrF,IAAI,QAAQ,EAAE,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBAC3C,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;QAED,iFAAiF;QACjF,MAAM,iBAAiB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;QACzE,IAAI,iBAAiB,EAAE,CAAC;YACtB,0DAA0D;YAC1D,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACxE,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,oBAAoB;QAC1B,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC7C,mDAAmD;YACnD,IAAI,KAAK,CAAC,UAAU;gBAAE,SAAS;YAE/B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjC,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAChD,2CAA2C;oBAC3C,IAAI,WAAW,EAAE,UAAU;wBAAE,SAAS;oBAEtC,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;oBAC9D,IAAI,QAAQ,EAAE,CAAC;wBACb,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAC/B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAE9B,4DAA4D;wBAC5D,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,kBAAkB,KAAK,QAAQ,EAAE,CAAC;4BACtF,+CAA+C;4BAC/C,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC7C,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,UAAU,CACjE,CAAC;4BACF,IAAI,CAAC,aAAa,EAAE,CAAC;gCACnB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;oCACjB,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;oCAC7B,MAAM,EAAE,KAAK;oCACb,MAAM,EAAE,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;iCACrF,CAAC,CAAC;4BACL,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,MAAc,EAAE,MAAc;QAC1D,gEAAgE;QAChE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5E,OAAO,GAAG,KAAK,IAAI,MAAM,EAAE,CAAC;IAC9B,CAAC;IAIO,qBAAqB,CAAC,SAAiB,EAAE,KAAmB;QAClE,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QAE9B,oDAAoD;QACpD,IAAI,YAAmE,CAAC;QACxE,IAAI,UAAU,GAAuB,KAAK,CAAC,UAAU,CAAC;QACtD,IAAI,kBAAkB,GAAwB,QAAQ,CAAC;QACvD,IAAI,cAAc,GAAuB,SAAS,CAAC;QAEnD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,6CAA6C;YAC7C,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7C,oFAAoF;gBACpF,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAC/C,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CACrC,CAAC;gBACF,IAAI,YAAY,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;oBACzC,0CAA0C;oBAC1C,YAAY,GAAG,YAAY,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACN,qDAAqD;oBACrD,YAAY,GAAG,WAAW,CAAC;gBAC7B,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,YAAY,GAAG,YAAY,CAAC;gBAC5B,uDAAuD;gBACvD,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrE,CAAC;gBACD,kEAAkE;YACpE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,0CAA0C;YAC1C,YAAY,GAAG,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;QACpF,CAAC;QAED,sDAAsD;QACtD,IAAI,CAAC,UAAU,IAAI,YAAY,KAAK,YAAY,EAAE,CAAC;YACjD,IAAI,YAAY,KAAK,WAAW,EAAE,CAAC;gBACjC,UAAU,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,yBAAyB;gBACzB,UAAU,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;YACrD,CAAC;QACH,CAAC;QAED,6EAA6E;QAC7E,IAAI,eAAe,GAA0B,UAAU,CAAC;QACxD,IAAI,YAAY,KAAK,WAAW,EAAE,CAAC;YACjC,iFAAiF;YACjF,eAAe,GAAG,QAAQ,CAAC;QAC7B,CAAC;aAAM,IAAI,YAAY,KAAK,YAAY,EAAE,CAAC;YACzC,qGAAqG;YACrG,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;QACvD,CAAC;QACD,wDAAwD;QAExD,+CAA+C;QAC/C,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAC9B,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC/C,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;gBAC5E,IAAI,eAAe,EAAE,CAAC;oBACpB,iBAAiB,GAAG,eAAe,CAAC,OAAO,CAAC;gBAC9C,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAkB;YAC9B,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,MAAM,EAAE,KAAK,CAAC,IAAI;YAClB,UAAU;YACV,kBAAkB;YAClB,cAAc;YACd,QAAQ,EAAE,KAAK,CAAC,gBAAgB,IAAI,eAAe;YACnD,KAAK,EAAE,KAAK,CAAC,aAAa,IAAI,IAAI;YAClC,iBAAiB;YACjB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,UAAU;SACvC,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,gBAAgB,CAAC,SAAiB;QACxC,OAAO,SAAS,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC;IACvC,CAAC;IAED,SAAS;QACP,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,QAAQ;QACN,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,CAAC,IAAY;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,aAAa;QACX,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE;YACxB,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;YACtB,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE;YAC9B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YAC5B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YAC1B,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;SACrC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,QAAQ;QACN,MAAM,SAAS,GAAG,IAAI,eAAe,CACnC,IAAI,CAAC,SAAS,EAAE,EAChB,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,YAAY,EAAE,CACpB,CAAC;QACF,SAAS,CAAC,QAAQ,CAAC;YACjB,iBAAiB,EAAE,IAAI;YACvB,yBAAyB,EAAE,KAAK,CAAE,sEAAsE;SACzG,CAAC,CAAC;QAEH,eAAe;QACf,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAChD,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;CACF"}
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"}