Skip to content

Commit 546a8f4

Browse files
author
Bart Koelman
committed
Extract method
1 parent 1ba05e2 commit 546a8f4

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

src/JsonApiDotNetCore/Services/JsonApiResourceService.cs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -226,17 +226,7 @@ private async Task RetrieveResourceCountForNonPrimaryEndpointAsync(TId id, HasMa
226226
}
227227
catch (DataStoreUpdateException)
228228
{
229-
if (!Equals(resourceFromRequest.Id, default(TId)))
230-
{
231-
TResource? existingResource =
232-
await GetPrimaryResourceByIdOrDefaultAsync(resourceFromRequest.Id, TopFieldSelection.OnlyIdAttribute, cancellationToken);
233-
234-
if (existingResource != null)
235-
{
236-
throw new ResourceAlreadyExistsException(resourceFromRequest.StringId!, _request.PrimaryResourceType.PublicName);
237-
}
238-
}
239-
229+
await AssertPrimaryResourceDoesNotExistAsync(resourceFromRequest, cancellationToken);
240230
await AssertResourcesToAssignInRelationshipsExistAsync(resourceFromRequest, cancellationToken);
241231
throw;
242232
}
@@ -249,6 +239,19 @@ private async Task RetrieveResourceCountForNonPrimaryEndpointAsync(TId id, HasMa
249239
return hasImplicitChanges ? resourceFromDatabase : null;
250240
}
251241

242+
protected async Task AssertPrimaryResourceDoesNotExistAsync(TResource resource, CancellationToken cancellationToken)
243+
{
244+
if (!Equals(resource.Id, default(TId)))
245+
{
246+
TResource? existingResource = await GetPrimaryResourceByIdOrDefaultAsync(resource.Id, TopFieldSelection.OnlyIdAttribute, cancellationToken);
247+
248+
if (existingResource != null)
249+
{
250+
throw new ResourceAlreadyExistsException(resource.StringId!, _request.PrimaryResourceType!.PublicName);
251+
}
252+
}
253+
}
254+
252255
protected virtual async Task InitializeResourceAsync(TResource resourceForDatabase, CancellationToken cancellationToken)
253256
{
254257
await _resourceDefinitionAccessor.OnPrepareWriteAsync(resourceForDatabase, WriteOperationKind.CreateResource, cancellationToken);

0 commit comments

Comments
 (0)