@@ -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