Browse Source

Merge pull request #2613 from ondratra/query_node_sumer_dataobject_removal

Query node - error prevention for data object deletion
Mokhtar Naamani 3 years ago
parent
commit
7d380d98ec
2 changed files with 6 additions and 1 deletions
  1. 5 0
      query-node/mappings/src/content/channel.ts
  2. 1 1
      query-node/mappings/src/storage.ts

+ 5 - 0
query-node/mappings/src/content/channel.ts

@@ -13,6 +13,7 @@ import {
   convertContentActorToChannelOwner,
   convertContentActorToDataObjectOwner,
 } from './utils'
+import { disconnectDataObjectRelations } from '../storage'
 
 import { Channel, ChannelCategory, DataObject, AssetAvailability } from 'query-node'
 import { inconsistentState, logger } from '../common'
@@ -127,6 +128,10 @@ export async function content_ChannelAssetsRemoved(db: DatabaseManager, event: S
 
   // delete assets
   for (const asset of assets) {
+    // ensure dataObject is nowhere used to prevent db constraint error
+    await disconnectDataObjectRelations(db, asset)
+
+    // remove data object
     await db.remove<DataObject>(asset)
   }
 

+ 1 - 1
query-node/mappings/src/storage.ts

@@ -179,7 +179,7 @@ async function updateSingleConnectedAsset<T extends Channel | Video>(
 }
 
 // removes connection between dataObject and other entities
-async function disconnectDataObjectRelations(db: DatabaseManager, dataObject: DataObject) {
+export async function disconnectDataObjectRelations(db: DatabaseManager, dataObject: DataObject) {
   await disconnectSingleDataObjectRelation(db, new Channel(), 'avatarPhoto', dataObject)
   await disconnectSingleDataObjectRelation(db, new Channel(), 'coverPhoto', dataObject)