UNPKG

@tsed/prisma

Version:

Generate Ts.ED JsonSchema based on Prisma models

24 lines (23 loc) 876 B
export function isCircularRef(modelName, fieldType, ctx) { if (modelName === fieldType) { return true; } const relation1 = ctx.modelsMap.get(modelName); const relation2 = ctx.modelsMap.get(fieldType); return Boolean(relation1 && relation2 && hasModelInFields(relation1, fieldType, ctx) && hasModelInFields(relation2, modelName, ctx)); } function hasModelInFields(model, relation, ctx, inspected = []) { return !!model.fields.find((field) => { if (field.type === relation) { return true; } if (!inspected.includes(field.type)) { const nextModel = ctx.modelsMap.get(field.type); if (nextModel) { inspected = [...inspected, field.type]; return hasModelInFields(nextModel, relation, ctx, inspected); } } return false; }); }