@tsed/prisma
Version:
Generate Ts.ED JsonSchema based on Prisma models
24 lines (23 loc) • 876 B
JavaScript
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;
});
}