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,52 +25,59 @@ 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 . BASELINE_PIECE :
39- case ExpectedPackageDBType . RUNDOWN_BASELINE_OBJECTS :
40- onUpdatedPackageInfoForRundownDebounce ( pkg )
41- break
42- case ExpectedPackageDBType . BUCKET_ADLIB :
43- case ExpectedPackageDBType . BUCKET_ADLIB_ACTION :
44- onUpdatedPackageInfoForBucketItemDebounce ( pkg )
45- break
46- case ExpectedPackageDBType . STUDIO_BASELINE_OBJECTS :
47- onUpdatedPackageInfoForStudioBaselineDebounce ( pkg )
48- break
49- default :
50- assertNever ( pkg )
51- 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 . BASELINE_PIECE :
37+ case ExpectedPackageDBType . RUNDOWN_BASELINE_OBJECTS :
38+ onUpdatedPackageInfoForRundownDebounce ( pkg )
39+ break
40+ case ExpectedPackageDBType . BUCKET_ADLIB :
41+ case ExpectedPackageDBType . BUCKET_ADLIB_ACTION :
42+ onUpdatedPackageInfoForBucketItemDebounce ( pkg , source )
43+ break
44+ case ExpectedPackageDBType . STUDIO_BASELINE_OBJECTS :
45+ onUpdatedPackageInfoForStudioBaselineDebounce ( pkg )
46+ break
47+ default :
48+ assertNever ( source )
49+ break
50+ }
5251 }
5352 }
5453}
5554
5655const pendingRundownPackageUpdates = new Map < RundownId , Array < ExpectedPackageId > > ( )
57- function onUpdatedPackageInfoForRundownDebounce ( pkg : ExpectedPackageFromRundown | ExpectedPackageFromRundownBaseline ) {
58- const existingEntry = pendingRundownPackageUpdates . get ( pkg . rundownId )
56+ function onUpdatedPackageInfoForRundownDebounce ( pkg : ExpectedPackageDB ) {
57+ if ( ! pkg . rundownId ) {
58+ logger . error ( `Updating ExpectedPackage "${ pkg . _id } " for Rundown "${ pkg . rundownId } " not possible` )
59+ return
60+ }
61+
62+ const rundownId = pkg . rundownId
63+
64+ const existingEntry = pendingRundownPackageUpdates . get ( rundownId )
5965 if ( existingEntry ) {
6066 // already queued, add to the batch
6167 existingEntry . push ( pkg . _id )
6268 } else {
63- pendingRundownPackageUpdates . set ( pkg . rundownId , [ pkg . _id ] )
69+ pendingRundownPackageUpdates . set ( rundownId , [ pkg . _id ] )
6470 }
6571
6672 // TODO: Scaling - this won't batch correctly if package manager directs calls to multiple instances
6773 lazyIgnore (
68- `onUpdatedPackageInfoForRundown_${ pkg . rundownId } ` ,
74+ `onUpdatedPackageInfoForRundown_${ rundownId } ` ,
6975 ( ) => {
70- const packageIds = pendingRundownPackageUpdates . get ( pkg . rundownId )
76+ const packageIds = pendingRundownPackageUpdates . get ( rundownId )
7177 if ( packageIds ) {
72- pendingRundownPackageUpdates . delete ( pkg . rundownId )
73- onUpdatedPackageInfoForRundown ( pkg . rundownId , packageIds ) . catch ( ( e ) => {
74- logger . error (
75- `Updating ExpectedPackages for Rundown "${ pkg . rundownId } " failed: ${ stringifyError ( e ) } `
76- )
78+ pendingRundownPackageUpdates . delete ( rundownId )
79+ onUpdatedPackageInfoForRundown ( rundownId , packageIds ) . catch ( ( e ) => {
80+ logger . error ( `Updating ExpectedPackages for Rundown "${ rundownId } " failed: ${ stringifyError ( e ) } ` )
7781 } )
7882 }
7983 } ,
@@ -108,19 +112,24 @@ async function onUpdatedPackageInfoForRundown(
108112 } )
109113}
110114
111- function onUpdatedPackageInfoForBucketItemDebounce (
112- pkg : ExpectedPackageDBFromBucketAdLib | ExpectedPackageDBFromBucketAdLibAction
113- ) {
115+ function onUpdatedPackageInfoForBucketItemDebounce ( pkg : ExpectedPackageDB , source : ExpectedPackageIngestSourceBucket ) {
116+ if ( ! pkg . bucketId ) {
117+ logger . error ( `Updating ExpectedPackage "${ pkg . _id } " for Bucket "${ pkg . bucketId } " not possible` )
118+ return
119+ }
120+
121+ const bucketId = pkg . bucketId
122+
114123 lazyIgnore (
115- `onUpdatedPackageInfoForBucket_${ pkg . studioId } _${ pkg . bucketId } _${ pkg . pieceExternalId } ` ,
124+ `onUpdatedPackageInfoForBucket_${ pkg . studioId } _${ bucketId } _${ source . pieceExternalId } ` ,
116125 ( ) => {
117126 runIngestOperation ( pkg . studioId , IngestJobs . BucketItemRegenerate , {
118- bucketId : pkg . bucketId ,
119- externalId : pkg . pieceExternalId ,
127+ bucketId : bucketId ,
128+ externalId : source . pieceExternalId ,
120129 } ) . catch ( ( err ) => {
121130 logger . error (
122- `Updating ExpectedPackages for Bucket "${ pkg . bucketId } " Item "${
123- pkg . pieceExternalId
131+ `Updating ExpectedPackages for Bucket "${ bucketId } " Item "${
132+ source . pieceExternalId
124133 } " failed: ${ stringifyError ( err ) } `
125134 )
126135 } )
@@ -129,7 +138,7 @@ function onUpdatedPackageInfoForBucketItemDebounce(
129138 )
130139}
131140
132- function onUpdatedPackageInfoForStudioBaselineDebounce ( pkg : ExpectedPackageDBFromStudioBaselineObjects ) {
141+ function onUpdatedPackageInfoForStudioBaselineDebounce ( pkg : ExpectedPackageDB ) {
133142 lazyIgnore (
134143 `onUpdatedPackageInfoForStudioBaseline_${ pkg . studioId } ` ,
135144 ( ) => {
0 commit comments