getRelationObject static method

dynamic getRelationObject({
  1. required ColumnRelation relation,
  2. dynamic value,
})

Implementation

static getRelationObject({required ColumnRelation relation, dynamic value}) {
  if (value == null) {
    return null;
  }
  switch (relation.relationType) {
    case RelationType.ManyToOne:
      Map<String, dynamic> relationMap = {};

      relation.referencedEntityColumns?.forEach((column) {
        var relationValue = value[column!.name];
        if (relationValue.runtimeType == int &&
            column.type == ColumnType.BOOLEAN) {
          relationMap[column.name as String] =
              relationValue == 1 ? true : false;
        } else if (relationValue.runtimeType == String &&
            column.type == ColumnType.BOOLEAN) {
          relationMap[column.name as String] =
              relationValue == "1" ? true : false;
        } else {
          relationMap[column.name as String] = relationValue;
        }
      });

      return relation.referencedEntity?.classMirror!
          .newInstance('fromJson', [relationMap]);

    case RelationType.OneToMany:
      return value.toList().map((valueItem) {
        Map<String, dynamic> relationMap = {};

        relation.referencedEntityColumns?.forEach((column) {
          var relationValue = valueItem[column!.name];
          if (relationValue.runtimeType == int &&
              column.type == ColumnType.BOOLEAN) {
            relationMap[column.name as String] =
                relationValue == 1 ? true : false;
          } else if (relationValue.runtimeType == String &&
              column.type == ColumnType.BOOLEAN) {
            relationMap[column.name as String] =
                relationValue == "1" ? true : false;
          } else {
            relationMap[column.name as String] = relationValue;
          }
        });

        return relationMap;
      }).toList();

    default:
      return null;
  }
}