createMultipleItems<T extends DirectusData> method
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;
}