@@ -328,6 +328,15 @@ module.exports = {
328
328
}
329
329
}
330
330
} ,
331
+ afterDelete : {
332
+ async deleteRelatedReverseId ( req , doc ) {
333
+ // When deleting an unlocalized or draft document,
334
+ // we remove related reverse IDs of documents having a relation to the deleted one
335
+ if ( ! doc . aposMode || doc . aposMode === 'draft' ) {
336
+ await self . deleteRelatedReverseId ( doc , true ) ;
337
+ }
338
+ }
339
+ } ,
331
340
afterRescue : {
332
341
async revertDeduplication ( req , doc ) {
333
342
const $set = await self . getRevertDeduplicationSet ( req , doc ) ;
@@ -371,18 +380,27 @@ module.exports = {
371
380
372
381
methods ( self ) {
373
382
return {
374
- async updateCacheField ( req , doc ) {
375
- const relatedDocsIds = self . getRelatedDocsIds ( req , doc ) ;
376
-
377
- // - Remove current doc reference from docs that include it
378
- // - Update these docs' cache field
379
- await self . apos . doc . db . updateMany ( {
383
+ async deleteRelatedReverseId ( doc , deleting = false ) {
384
+ const locales = doc . aposLocale && deleting
385
+ ? [
386
+ doc . aposLocale . replace ( ':draft' , ':published' ) ,
387
+ doc . aposLocale . replace ( ':published' , ':draft' )
388
+ ]
389
+ : [ doc . aposLocale ] ;
390
+ return self . apos . doc . db . updateMany ( {
380
391
relatedReverseIds : { $in : [ doc . aposDocId ] } ,
381
- aposLocale : { $in : [ doc . aposLocale , null ] }
392
+ aposLocale : { $in : [ ... locales , null ] }
382
393
} , {
383
394
$pull : { relatedReverseIds : doc . aposDocId } ,
384
395
$set : { cacheInvalidatedAt : doc . updatedAt }
385
396
} ) ;
397
+ } ,
398
+ async updateCacheField ( req , doc ) {
399
+ const relatedDocsIds = self . getRelatedDocsIds ( req , doc ) ;
400
+
401
+ // - Remove current doc reference from docs that include it
402
+ // - Update these docs' cache field
403
+ await this . deleteRelatedReverseId ( doc ) ;
386
404
387
405
if ( relatedDocsIds . length ) {
388
406
// - Add current doc reference to related docs
0 commit comments