1- import { ExpectedPackageDBType , ExpectedPackageDBNew } from '@sofie-automation/corelib/dist/dataModel/ExpectedPackages'
1+ import {
2+ ExpectedPackageDBType ,
3+ ExpectedPackageDBNew ,
4+ ExpectedPackageIngestSourceBucket ,
5+ } from '@sofie-automation/corelib/dist/dataModel/ExpectedPackages'
26import { PackageInfoDB } from '@sofie-automation/corelib/dist/dataModel/PackageInfos'
37import { ExpectedPackages , Rundowns } from '../../collections'
48import { assertNever } from '../../lib/tempLib'
@@ -21,51 +25,58 @@ export async function onUpdatedPackageInfo(packageId: ExpectedPackageId, _doc: P
2125 return
2226 }
2327
24- if ( pkg . listenToPackageInfoUpdates ) {
25- switch ( pkg . fromPieceType ) {
26- case ExpectedPackageDBType . PIECE :
27- case ExpectedPackageDBType . ADLIB_PIECE :
28- case ExpectedPackageDBType . ADLIB_ACTION :
29- case ExpectedPackageDBType . BASELINE_ADLIB_PIECE :
30- case ExpectedPackageDBType . BASELINE_ADLIB_ACTION :
31- case ExpectedPackageDBType . RUNDOWN_BASELINE_OBJECTS :
32- onUpdatedPackageInfoForRundownDebounce ( pkg )
33- break
34- case ExpectedPackageDBType . BUCKET_ADLIB :
35- case ExpectedPackageDBType . BUCKET_ADLIB_ACTION :
36- onUpdatedPackageInfoForBucketItemDebounce ( pkg )
37- break
38- case ExpectedPackageDBType . STUDIO_BASELINE_OBJECTS :
39- onUpdatedPackageInfoForStudioBaselineDebounce ( pkg )
40- break
41- default :
42- assertNever ( pkg )
43- 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+ }
4450 }
4551 }
4652}
4753
4854const pendingRundownPackageUpdates = new Map < RundownId , Array < ExpectedPackageId > > ( )
49- function onUpdatedPackageInfoForRundownDebounce ( pkg : ExpectedPackageFromRundown | ExpectedPackageFromRundownBaseline ) {
50- const existingEntry = pendingRundownPackageUpdates . get ( pkg . rundownId )
55+ function onUpdatedPackageInfoForRundownDebounce ( pkg : ExpectedPackageDBNew ) {
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 )
5164 if ( existingEntry ) {
5265 // already queued, add to the batch
5366 existingEntry . push ( pkg . _id )
5467 } else {
55- pendingRundownPackageUpdates . set ( pkg . rundownId , [ pkg . _id ] )
68+ pendingRundownPackageUpdates . set ( rundownId , [ pkg . _id ] )
5669 }
5770
5871 // TODO: Scaling - this won't batch correctly if package manager directs calls to multiple instances
5972 lazyIgnore (
60- `onUpdatedPackageInfoForRundown_${ pkg . rundownId } ` ,
73+ `onUpdatedPackageInfoForRundown_${ rundownId } ` ,
6174 ( ) => {
62- const packageIds = pendingRundownPackageUpdates . get ( pkg . rundownId )
75+ const packageIds = pendingRundownPackageUpdates . get ( rundownId )
6376 if ( packageIds ) {
64- pendingRundownPackageUpdates . delete ( pkg . rundownId )
65- onUpdatedPackageInfoForRundown ( pkg . rundownId , packageIds ) . catch ( ( e ) => {
66- logger . error (
67- `Updating ExpectedPackages for Rundown "${ pkg . rundownId } " failed: ${ stringifyError ( e ) } `
68- )
77+ pendingRundownPackageUpdates . delete ( rundownId )
78+ onUpdatedPackageInfoForRundown ( rundownId , packageIds ) . catch ( ( e ) => {
79+ logger . error ( `Updating ExpectedPackages for Rundown "${ rundownId } " failed: ${ stringifyError ( e ) } ` )
6980 } )
7081 }
7182 } ,
@@ -100,17 +111,27 @@ async function onUpdatedPackageInfoForRundown(
100111 } )
101112}
102113
103- function onUpdatedPackageInfoForBucketItemDebounce ( pkg : ExpectedPackageDBNew ) {
114+ function onUpdatedPackageInfoForBucketItemDebounce (
115+ pkg : ExpectedPackageDBNew ,
116+ source : ExpectedPackageIngestSourceBucket
117+ ) {
118+ if ( ! pkg . bucketId ) {
119+ logger . error ( `Updating ExpectedPackage "${ pkg . _id } " for Bucket "${ pkg . bucketId } " not possible` )
120+ return
121+ }
122+
123+ const bucketId = pkg . bucketId
124+
104125 lazyIgnore (
105- `onUpdatedPackageInfoForBucket_${ pkg . studioId } _${ pkg . bucketId } _${ pkg . pieceExternalId } ` ,
126+ `onUpdatedPackageInfoForBucket_${ pkg . studioId } _${ bucketId } _${ source . pieceExternalId } ` ,
106127 ( ) => {
107128 runIngestOperation ( pkg . studioId , IngestJobs . BucketItemRegenerate , {
108- bucketId : pkg . bucketId ,
109- externalId : pkg . pieceExternalId ,
129+ bucketId : bucketId ,
130+ externalId : source . pieceExternalId ,
110131 } ) . catch ( ( err ) => {
111132 logger . error (
112- `Updating ExpectedPackages for Bucket "${ pkg . bucketId } " Item "${
113- pkg . pieceExternalId
133+ `Updating ExpectedPackages for Bucket "${ bucketId } " Item "${
134+ source . pieceExternalId
114135 } " failed: ${ stringifyError ( err ) } `
115136 )
116137 } )
@@ -119,7 +140,7 @@ function onUpdatedPackageInfoForBucketItemDebounce(pkg: ExpectedPackageDBNew) {
119140 )
120141}
121142
122- function onUpdatedPackageInfoForStudioBaselineDebounce ( pkg : ExpectedPackageDBFromStudioBaselineObjects ) {
143+ function onUpdatedPackageInfoForStudioBaselineDebounce ( pkg : ExpectedPackageDBNew ) {
123144 lazyIgnore (
124145 `onUpdatedPackageInfoForStudioBaseline_${ pkg . studioId } ` ,
125146 ( ) => {
0 commit comments