batchDelete method

  1. @override
Future<void> batchDelete(
  1. List<Id> ids
)
override

Implementation

@override
Future<void> batchDelete(List<Id> ids) async {
  final soft = config.deletedAtField != null;
  for (final id in ids) {
    final idStr = config.idToString(id);
    try {
      final rec = await config.client
          .collection(config.collection)
          .getFirstListItem("${config.idField}='$idStr'");
      if (soft) {
        final patch = <String, dynamic>{
          config.deletedAtField!: DateTime.now().toUtc().toIso8601String(),
        };
        if (config.injectScopeOnWrite && config.defaultScope != null) {
          final scopeMap =
              config.scopeFieldsBuilder?.call(config.defaultScope!) ??
              {
                config.scopeNameField: config.defaultScope!.name,
                config.scopeKeysField: config.defaultScope!.keys,
              };
          patch.addAll(scopeMap);
        }
        await config.client
            .collection(config.collection)
            .update(rec.id, body: patch);
      } else {
        await config.client.collection(config.collection).delete(rec.id);
      }
    } catch (_) {
      // ignore not found
    }
  }
}