@@ -226,17 +226,7 @@ private async Task RetrieveResourceCountForNonPrimaryEndpointAsync(TId id, HasMa
226
226
}
227
227
catch ( DataStoreUpdateException )
228
228
{
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 ) ;
240
230
await AssertResourcesToAssignInRelationshipsExistAsync ( resourceFromRequest , cancellationToken ) ;
241
231
throw ;
242
232
}
@@ -249,6 +239,19 @@ private async Task RetrieveResourceCountForNonPrimaryEndpointAsync(TId id, HasMa
249
239
return hasImplicitChanges ? resourceFromDatabase : null ;
250
240
}
251
241
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
+
252
255
protected virtual async Task InitializeResourceAsync ( TResource resourceForDatabase , CancellationToken cancellationToken )
253
256
{
254
257
await _resourceDefinitionAccessor . OnPrepareWriteAsync ( resourceForDatabase , WriteOperationKind . CreateResource , cancellationToken ) ;
0 commit comments