createMultipleItems<T extends DirectusData> method

  1. @override
Future<DirectusItemCreationResult<T>> createMultipleItems<T extends DirectusData>({
  1. String? fields,
  2. required Iterable<T> objectList,
  3. List<String> extraTags = const [],
})
override

Implementation

@override
Future<DirectusItemCreationResult<T>>
    createMultipleItems<T extends DirectusData>({
  String? fields,
  required Iterable<T> objectList,

  /// Extra tags to clear from the cache
  List<String> extraTags = const [],
}) async {
  if (objectList.isEmpty) {
    throw Exception("objectList can not be empty");
  }
  final specificClass = _metadataGenerator.getClassMirrorForType(T);
  final collectionMetadata = _collectionMetadataFromClass(specificClass);
  final List<Map<String, dynamic>> objectListData =
      objectList.map(((object) => object.mapForObjectCreation())).toList();
  final DirectusItemCreationResult<T> result = await _sendRequest(
      canSaveResponseToCache: false,
      prepareRequest: () => _api.prepareCreateNewItemRequest(
          endpointName: collectionMetadata.endpointName,
          endpointPrefix: collectionMetadata.endpointPrefix,
          objectData: objectListData,
          fields: fields ?? collectionMetadata.defaultFields),
      parseResponse: (response) {
        switch (response.statusCode) {
          case 200:
            final DirectusItemCreationResult<T> creationResult =
                DirectusItemCreationResult(isSuccess: true);
            final listJson = _api.parseCreateNewItemResponse(response);
            if (listJson is List) {
              for (final itemJson in listJson) {
                creationResult.createdItemList
                    .add(specificClass.newInstance('', [itemJson]) as T);
              }
            }
            return creationResult;
          case 204:
            return DirectusItemCreationResult(isSuccess: true);
          default:
            return DirectusItemCreationResult(
                isSuccess: false,
                error: DirectusApiError(response: response));
        }
      });
  if (cacheEngine != null) {
    await removeCacheEntriesWithTags(
        ["${collectionMetadata.endpointName}/list", ...extraTags]);
  }
  return result;
}