MCPcopy
hub / github.com/subquery/subql / generateModels

Function generateModels

packages/cli/src/controller/codegen-controller.ts:304–361  ·  view source on GitHub ↗
(projectPath: string, schema: string)

Source from the content-addressed store, hash-verified

302}
303// 2. Loop all entities and render it
304export async function generateModels(projectPath: string, schema: string): Promise<void> {
305 const extractEntities = getAllEntitiesRelations(schema);
306 for (const entity of extractEntities.models) {
307 const baseFolderPath = '.../../base';
308 const className = upperFirst(entity.name);
309
310 const entityName = validateEntityName(entity.name);
311
312 const fields = processFields('entity', className, entity.fields, entity.indexes);
313 const idType = fields.find((f) => f.name === 'id')?.type ?? 'string';
314 const importJsonInterfaces = uniq(fields.filter((field) => field.isJsonInterface).map((f) => f.type));
315 const importEnums = uniq(fields.filter((field) => field.isEnum).map((f) => f.type));
316 const indexedFields = fields.filter((field) => field.indexed && !field.isJsonInterface);
317 const modelTemplate = {
318 props: {
319 baseFolderPath,
320 className,
321 entityName,
322 fields,
323 importJsonInterfaces,
324 importEnums,
325 indexedFields,
326 idType,
327 },
328 helper: {
329 upperFirst,
330 },
331 };
332 try {
333 await renderTemplate(
334 MODEL_TEMPLATE_PATH,
335 path.join(projectPath, MODEL_ROOT_DIR, `${className}.ts`),
336 modelTemplate
337 );
338 } catch (e) {
339 console.error(e);
340 throw new Error(`Codegen failed for entity ${className}.`, {cause: e});
341 }
342 console.log(`* Schema ${className} generated !`);
343 }
344 const classNames = extractEntities.models.map((entity) => upperFirst(entity.name));
345 if (classNames.length !== 0) {
346 try {
347 await renderTemplate(MODELS_INDEX_TEMPLATE_PATH, path.join(projectPath, MODEL_ROOT_DIR, `index.ts`), {
348 props: {
349 classNames,
350 },
351 helper: {
352 upperFirst,
353 },
354 });
355 exportTypes.models = true;
356 } catch (e) {
357 throw new Error(`Failed to codgen for model indexes.`, {cause: e});
358 }
359 console.log(`* Models index generated !`);
360 }
361}

Callers 1

generateSchemaModelsFunction · 0.85

Calls 8

getAllEntitiesRelationsFunction · 0.90
renderTemplateFunction · 0.90
validateEntityNameFunction · 0.85
processFieldsFunction · 0.85
mapMethod · 0.80
findMethod · 0.65
errorMethod · 0.45
logMethod · 0.45

Tested by

no test coverage detected