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;
}