storeData<DataT extends Data> function
- DataT data, {
- required String forId,
- bool addId = true,
- OverrideMode overrideMode = OverrideMode.update,
permanently stores a DataT in its corresponding collection
Implementation
Future<String> storeData<DataT extends Data>(
DataT data, {
required String forId,
bool addId = true,
OverrideMode overrideMode = OverrideMode.update,
}) async {
final collectionName = _getCollectionNameForData<DataT>(forId);
var json = data.toJson();
String? oldId = data.id;
final isExistent = ((await db.collection(collectionName).get())
?.keys
.contains('/$collectionName/$oldId')) ??
false;
if (overrideMode == OverrideMode.abortIfExistent && isExistent) {
debugPrint('wont override $oldId');
return '';
}
//create a new document with new id if wanted
final id = (!isExistent || overrideMode == OverrideMode.update)
? oldId
: db.collection(collectionName).doc().id;
if (addId) json['local_id'] = id;
db.collection(collectionName).doc(id).set(json);
return id;
}