initialize method
Relationship<E, N>
initialize({
- required DataModelMixin<
DataModelMixin> owner, - required String name,
- String? inverseName,
- Set<
String> ? overrideKeys,
Initializes this relationship (typically when initializing the owner
in DataModelMixin) by supplying the owner, and related metadata.
overrideKeys
ignores if the relationship was previously initialized.
Implementation
Relationship<E, N> initialize(
{required final DataModelMixin owner,
required final String name,
final String? inverseName,
Set<String>? overrideKeys}) {
if (overrideKeys == null && isInitialized) return this;
_ownerKey = owner._key;
_name = name;
_inverseName = inverseName;
if (overrideKeys != null) {
_uninitializedKeys = overrideKeys;
} else if (_uninitializedKeys == null) {
// means it was omitted (remote-omitted, or loaded locally), so skip
return this;
}
// setting up from scratch, remove all and add keys
_graph._removeEdges(_ownerKey!,
metadata: _name!, inverseMetadata: _inverseName, notify: false);
// in case node was removed during removeEdges
_graph._addNode(_ownerKey!);
_graph._addEdges(
_ownerKey!,
tos: _uninitializedKeys!,
metadata: _name!,
inverseMetadata: _inverseName,
notify: false,
);
_graph.box!.flush();
_uninitializedKeys!.clear();
return this;
}