11import {
2- ExpectedPackageDBFromBucketAdLib ,
3- ExpectedPackageDBFromBucketAdLibAction ,
4- ExpectedPackageDBFromStudioBaselineObjects ,
52 ExpectedPackageDBType ,
6- ExpectedPackageFromRundown ,
7- ExpectedPackageFromRundownBaseline ,
3+ ExpectedPackageDB ,
4+ ExpectedPackageIngestSourceBucket ,
85} from '@sofie-automation/corelib/dist/dataModel/ExpectedPackages'
96import { PackageInfoDB } from '@sofie-automation/corelib/dist/dataModel/PackageInfos'
107import { ExpectedPackages , Rundowns } from '../../collections'
@@ -28,51 +25,58 @@ export async function onUpdatedPackageInfo(packageId: ExpectedPackageId, _doc: P
2825 return
2926 }
3027
31- if ( pkg . listenToPackageInfoUpdates ) {
32- switch ( pkg . fromPieceType ) {
33- case ExpectedPackageDBType . PIECE :
34- case ExpectedPackageDBType . ADLIB_PIECE :
35- case ExpectedPackageDBType . ADLIB_ACTION :
36- case ExpectedPackageDBType . BASELINE_ADLIB_PIECE :
37- case ExpectedPackageDBType . BASELINE_ADLIB_ACTION :
38- case ExpectedPackageDBType . RUNDOWN_BASELINE_OBJECTS :
39- onUpdatedPackageInfoForRundownDebounce ( pkg )
40- break
41- case ExpectedPackageDBType . BUCKET_ADLIB :
42- case ExpectedPackageDBType . BUCKET_ADLIB_ACTION :
43- onUpdatedPackageInfoForBucketItemDebounce ( pkg )
44- break
45- case ExpectedPackageDBType . STUDIO_BASELINE_OBJECTS :
46- onUpdatedPackageInfoForStudioBaselineDebounce ( pkg )
47- break
48- default :
49- assertNever ( pkg )
50- break
28+ if ( pkg . package . listenToPackageInfoUpdates ) {
29+ for ( const source of pkg . ingestSources ) {
30+ switch ( source . fromPieceType ) {
31+ case ExpectedPackageDBType . PIECE :
32+ case ExpectedPackageDBType . ADLIB_PIECE :
33+ case ExpectedPackageDBType . ADLIB_ACTION :
34+ case ExpectedPackageDBType . BASELINE_ADLIB_PIECE :
35+ case ExpectedPackageDBType . BASELINE_ADLIB_ACTION :
36+ case ExpectedPackageDBType . RUNDOWN_BASELINE_OBJECTS :
37+ onUpdatedPackageInfoForRundownDebounce ( pkg )
38+ break
39+ case ExpectedPackageDBType . BUCKET_ADLIB :
40+ case ExpectedPackageDBType . BUCKET_ADLIB_ACTION :
41+ onUpdatedPackageInfoForBucketItemDebounce ( pkg , source )
42+ break
43+ case ExpectedPackageDBType . STUDIO_BASELINE_OBJECTS :
44+ onUpdatedPackageInfoForStudioBaselineDebounce ( pkg )
45+ break
46+ default :
47+ assertNever ( source )
48+ break
49+ }
5150 }
5251 }
5352}
5453
5554const pendingRundownPackageUpdates = new Map < RundownId , Array < ExpectedPackageId > > ( )
56- function onUpdatedPackageInfoForRundownDebounce ( pkg : ExpectedPackageFromRundown | ExpectedPackageFromRundownBaseline ) {
57- const existingEntry = pendingRundownPackageUpdates . get ( pkg . rundownId )
55+ function onUpdatedPackageInfoForRundownDebounce ( pkg : ExpectedPackageDB ) {
56+ if ( ! pkg . rundownId ) {
57+ logger . error ( `Updating ExpectedPackage "${ pkg . _id } " for Rundown "${ pkg . rundownId } " not possible` )
58+ return
59+ }
60+
61+ const rundownId = pkg . rundownId
62+
63+ const existingEntry = pendingRundownPackageUpdates . get ( rundownId )
5864 if ( existingEntry ) {
5965 // already queued, add to the batch
6066 existingEntry . push ( pkg . _id )
6167 } else {
62- pendingRundownPackageUpdates . set ( pkg . rundownId , [ pkg . _id ] )
68+ pendingRundownPackageUpdates . set ( rundownId , [ pkg . _id ] )
6369 }
6470
6571 // TODO: Scaling - this won't batch correctly if package manager directs calls to multiple instances
6672 lazyIgnore (
67- `onUpdatedPackageInfoForRundown_${ pkg . rundownId } ` ,
73+ `onUpdatedPackageInfoForRundown_${ rundownId } ` ,
6874 ( ) => {
69- const packageIds = pendingRundownPackageUpdates . get ( pkg . rundownId )
75+ const packageIds = pendingRundownPackageUpdates . get ( rundownId )
7076 if ( packageIds ) {
71- pendingRundownPackageUpdates . delete ( pkg . rundownId )
72- onUpdatedPackageInfoForRundown ( pkg . rundownId , packageIds ) . catch ( ( e ) => {
73- logger . error (
74- `Updating ExpectedPackages for Rundown "${ pkg . rundownId } " failed: ${ stringifyError ( e ) } `
75- )
77+ pendingRundownPackageUpdates . delete ( rundownId )
78+ onUpdatedPackageInfoForRundown ( rundownId , packageIds ) . catch ( ( e ) => {
79+ logger . error ( `Updating ExpectedPackages for Rundown "${ rundownId } " failed: ${ stringifyError ( e ) } ` )
7680 } )
7781 }
7882 } ,
@@ -107,19 +111,24 @@ async function onUpdatedPackageInfoForRundown(
107111 } )
108112}
109113
110- function onUpdatedPackageInfoForBucketItemDebounce (
111- pkg : ExpectedPackageDBFromBucketAdLib | ExpectedPackageDBFromBucketAdLibAction
112- ) {
114+ function onUpdatedPackageInfoForBucketItemDebounce ( pkg : ExpectedPackageDB , source : ExpectedPackageIngestSourceBucket ) {
115+ if ( ! pkg . bucketId ) {
116+ logger . error ( `Updating ExpectedPackage "${ pkg . _id } " for Bucket "${ pkg . bucketId } " not possible` )
117+ return
118+ }
119+
120+ const bucketId = pkg . bucketId
121+
113122 lazyIgnore (
114- `onUpdatedPackageInfoForBucket_${ pkg . studioId } _${ pkg . bucketId } _${ pkg . pieceExternalId } ` ,
123+ `onUpdatedPackageInfoForBucket_${ pkg . studioId } _${ bucketId } _${ source . pieceExternalId } ` ,
115124 ( ) => {
116125 runIngestOperation ( pkg . studioId , IngestJobs . BucketItemRegenerate , {
117- bucketId : pkg . bucketId ,
118- externalId : pkg . pieceExternalId ,
126+ bucketId : bucketId ,
127+ externalId : source . pieceExternalId ,
119128 } ) . catch ( ( err ) => {
120129 logger . error (
121- `Updating ExpectedPackages for Bucket "${ pkg . bucketId } " Item "${
122- pkg . pieceExternalId
130+ `Updating ExpectedPackages for Bucket "${ bucketId } " Item "${
131+ source . pieceExternalId
123132 } " failed: ${ stringifyError ( err ) } `
124133 )
125134 } )
@@ -128,7 +137,7 @@ function onUpdatedPackageInfoForBucketItemDebounce(
128137 )
129138}
130139
131- function onUpdatedPackageInfoForStudioBaselineDebounce ( pkg : ExpectedPackageDBFromStudioBaselineObjects ) {
140+ function onUpdatedPackageInfoForStudioBaselineDebounce ( pkg : ExpectedPackageDB ) {
132141 lazyIgnore (
133142 `onUpdatedPackageInfoForStudioBaseline_${ pkg . studioId } ` ,
134143 ( ) => {
0 commit comments