put method
Implementation
Future<T> put(d) async {
//final ctrl = FractalCtrl.map[item['name']] as EventsCtrl;
final mk = MakeF.init(d);
final attrs = allAttributes;
await FData.require(mk, [
...attrs.values
.where(
(a) => a.format == FormatF.reference,
)
.map((a) => a.name)
]);
if ((mk.map['hash'] ?? '') == '') {
final hd = hashData(mk.map);
mk.map['hash'] = Hashed.make(hd);
}
var evf = EventFractal.storage[mk.map['hash']] as T?;
if (evf != null) return evf;
if ([
FKind.system.index,
FKind.eternal.index,
FKind.file.index,
].contains(mk.map['kind']) &&
mk.map['stored_at'] == null) {
final res = await select(
where: {'hash': mk.map['hash']},
);
print('#${mk.map['hash']} res $res');
res.firstOrNull?.forEach((k, v) {
final attr = attrs[k];
if (attr?.format != FormatF.reference && !mk.map.containsKey(k)) {
mk.map[k] = v;
}
});
}
print('put ${mk.map}');
return evf ?? make(mk.map);
}