pankod/refine

View on GitHub
packages/inferencer/src/field-inferencers/relation.ts

Summary

Maintainability
A
1 hr
Test Coverage
import { FieldInferencer } from "../types";

export const relationRegexp = /(-id|-ids|_id|_ids|Id|Ids|ID|IDs)(\[\])?$/;

export const relationInfer: FieldInferencer = (key, value) => {
  const isRelation = relationRegexp.test(key);
  const isBasicValue = typeof value === "string" || typeof value === "number";
  const isBasicArray =
    Array.isArray(value) &&
    value.every((v) => typeof v === "string" || typeof v === "number");

  if ((isRelation && isBasicValue) || (isRelation && isBasicArray)) {
    return {
      key,
      relation: true,
      multiple: isBasicArray ? true : false,
      type: "relation",
      priority: 1,
    };
  }

  return false;
};