createFeatureToggle method

Future<void> createFeatureToggle(
  1. FeatureToggleModel model
)

Implementation

Future<void> createFeatureToggle(FeatureToggleModel model) async {
  try {
    var ref = this._firestore.collection('FeatureToggles');
    if (model.parent is Map<String, String>) {
      final keys = model.parent!.keys.toList();

      if (keys.length > 1) {
        throw FeatureTogglesDataServiceException(
            code: RdevCode.InvalidArgument,
            message: 'Parent can only have one key');
      }

      final key = keys.first;
      final value = model.parent![key];

      final collectionPath = key.split(RegExp(r'(?=[A-Z])'));

      final parentRef =
          _firestore.collection(collectionPath.join('/')).doc(value);

      ref = parentRef.collection('FeatureToggles');
    }

    var doc = model.uid is String ? ref.doc(model.uid) : ref.doc();

    await doc.set(model.toJson());
  } catch (err) {
    throw FeatureTogglesDataServiceException(message: err.toString());
  }
}