import { DMMF } from '@prisma/generator-helper';

export function checkModelHasModelRelation(model: DMMF.Model) {
  const { fields: modelFields } = model;
  for (const modelField of modelFields) {
    const isRelationField = checkIsModelRelationField(modelField);
    if (isRelationField) {
      return true;
    }
  }
  return false;
}

export function checkModelHasManyModelRelation(model: DMMF.Model) {
  const { fields: modelFields } = model;
  for (const modelField of modelFields) {
    const isManyRelationField = checkIsManyModelRelationField(modelField);
    if (isManyRelationField) {
      return true;
    }
  }
  return false;
}

export function checkIsModelRelationField(modelField: DMMF.Field) {
  const { kind, relationName } = modelField;
  return kind === 'object' && !!relationName;
}

export function checkIsManyModelRelationField(modelField: DMMF.Field) {
  return checkIsModelRelationField(modelField) && modelField.isList;
}

export function findModelByName(models: DMMF.Model[], modelName: string) {
  return models.find(({ name }) => name === modelName);
}
