typeId property

  1. @override
int typeId
override

Called for type registration

Implementation

@override
int get typeId {
  // _adapter_hive:key: {
  //   '_adapter_hive:posts': ['_adapter_hive:1'],
  //   '_adapter_hive:comments': ['_adapter_hive:2'],
  //   '_adapter_hive:houses': ['_adapter_hive:3'],
  // }

  if (!graph._hasNode(_hiveAdapterKey)) {
    graph._addNode(_hiveAdapterKey);
  }

  final _typesNode = graph._getNode(_hiveAdapterKey)!;

  final edge =
      _typesNode[StringUtils.namespace(_hiveAdapterNs, _internalType)];

  if (edge != null && edge.isNotEmpty) {
    // first is of format: _adapter_hive:1
    return int.parse(edge.first.denamespace());
  }

  // get namespaced indices
  final index = _typesNode.values
          // denamespace and parse single
          .map((e) => int.parse(e.first.denamespace()))
          // find max
          .fold(0, max) +
      1;

  graph._addEdge(_hiveAdapterKey,
      StringUtils.namespace(_hiveAdapterNs, index.toString()),
      metadata: StringUtils.namespace(_hiveAdapterNs, _internalType));
  return index;
}