Skip to content

Commit 68e25cf

Browse files
committed
wip
1 parent 3112dc0 commit 68e25cf

File tree

7 files changed

+47
-44
lines changed

7 files changed

+47
-44
lines changed

packages/job-worker/src/blueprints/context/watchedPackages.ts

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,20 @@ import { PackageInfo } from '@sofie-automation/blueprints-integration'
66
import { unprotectObjectArray } from '@sofie-automation/corelib/dist/protectedString'
77
import { IngestModelReadonly } from '../../ingest/model/IngestModel'
88
import { ReadonlyDeep } from 'type-fest'
9-
import {
10-
stripExpectedPackageDBToIngestExpectedPackage,
11-
type IngestExpectedPackage,
12-
} from '../../ingest/model/IngestExpectedPackage'
9+
import type { IngestExpectedPackage } from '../../ingest/model/IngestExpectedPackage'
1310
import type { ExpectedPackageIngestSource } from '@sofie-automation/corelib/dist/dataModel/ExpectedPackages'
1411

1512
/**
1613
* This is a helper class to simplify exposing packageInfo to various places in the blueprints
1714
*/
1815
export class WatchedPackagesHelper {
19-
private readonly packages = new Map<ExpectedPackageId, ReadonlyDeep<IngestExpectedPackage>>()
16+
private readonly packages = new Map<
17+
ExpectedPackageId,
18+
ReadonlyDeep<IngestExpectedPackage<ExpectedPackageIngestSource>>
19+
>()
2020

2121
private constructor(
22-
packages: ReadonlyDeep<IngestExpectedPackage[]>,
22+
packages: ReadonlyDeep<IngestExpectedPackage<ExpectedPackageIngestSource>[]>,
2323
private readonly packageInfos: ReadonlyDeep<PackageInfoDB[]>
2424
) {
2525
for (const pkg of packages) {
@@ -59,8 +59,18 @@ export class WatchedPackagesHelper {
5959
packageId: { $in: watchedPackages.map((p) => p._id) },
6060
})
6161

62-
const watchedIngestPackages: IngestExpectedPackage[] = watchedPackages.map(
63-
stripExpectedPackageDBToIngestExpectedPackage
62+
const watchedIngestPackages: IngestExpectedPackage<ExpectedPackageIngestSource>[] = watchedPackages.flatMap(
63+
(expectedPackage) => {
64+
// Split into a package per source
65+
return expectedPackage.ingestSources.map(
66+
(source) =>
67+
({
68+
_id: expectedPackage._id,
69+
package: expectedPackage.package,
70+
source: source,
71+
} satisfies IngestExpectedPackage<ExpectedPackageIngestSource>)
72+
)
73+
}
6474
)
6575

6676
return new WatchedPackagesHelper(watchedIngestPackages, watchedPackageInfos)
@@ -137,8 +147,11 @@ export class WatchedPackagesHelper {
137147
* This is useful so that all the data for a rundown can be loaded at the start of an ingest operation, and then subsets can be taken for particular blueprint methods without needing to do more db operations.
138148
* @param func A filter to check if each package should be included
139149
*/
140-
filter(_context: JobContext, func: (pkg: ReadonlyDeep<IngestExpectedPackage>) => boolean): WatchedPackagesHelper {
141-
const watchedPackages: ReadonlyDeep<IngestExpectedPackage>[] = []
150+
filter(
151+
_context: JobContext,
152+
func: (pkg: ReadonlyDeep<IngestExpectedPackage<ExpectedPackageIngestSource>>) => boolean
153+
): WatchedPackagesHelper {
154+
const watchedPackages: ReadonlyDeep<IngestExpectedPackage<ExpectedPackageIngestSource>>[] = []
142155
for (const pkg of this.packages.values()) {
143156
if (func(pkg)) watchedPackages.push(pkg)
144157
}
@@ -149,8 +162,8 @@ export class WatchedPackagesHelper {
149162
return new WatchedPackagesHelper(watchedPackages, watchedPackageInfos)
150163
}
151164

152-
getPackage(packageId: ExpectedPackageId): ReadonlyDeep<IngestExpectedPackage> | undefined {
153-
return this.packages.get(packageId)
165+
hasPackage(packageId: ExpectedPackageId): boolean {
166+
return this.packages.has(packageId)
154167
}
155168

156169
getPackageInfo(packageId: string): Readonly<Array<PackageInfo.Any>> {

packages/job-worker/src/ingest/generationRundown.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -214,12 +214,11 @@ export async function regenerateRundownAndBaselineFromIngestData(
214214
allRundownWatchedPackages: WatchedPackagesHelper,
215215
extraRundownNotes: RundownNote[]
216216
): Promise<ReadonlyDeep<DBRundown> | null> {
217-
const rundownBaselinePackages = allRundownWatchedPackages.filter(context, (pkg) =>
218-
pkg.ingestSources.some(
219-
(source) =>
220-
source.fromPieceType === ExpectedPackageDBType.BASELINE_ADLIB_ACTION ||
221-
source.fromPieceType === ExpectedPackageDBType.RUNDOWN_BASELINE_OBJECTS
222-
)
217+
const rundownBaselinePackages = allRundownWatchedPackages.filter(
218+
context,
219+
(pkg) =>
220+
pkg.source.fromPieceType === ExpectedPackageDBType.BASELINE_ADLIB_ACTION ||
221+
pkg.source.fromPieceType === ExpectedPackageDBType.RUNDOWN_BASELINE_OBJECTS
223222
)
224223

225224
const blueprintContext = new GetRundownContext(
@@ -356,7 +355,7 @@ function generateExpectedPackagesForBaseline(
356355

357356
package: expectedPackage,
358357

359-
ingestSources: [source],
358+
source: source,
360359
}
361360
}
362361

packages/job-worker/src/ingest/generationSegment.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,9 @@ async function regenerateSegmentAndUpdateModelFull(
105105

106106
// Filter down to the packages for this segment
107107
const segmentId = ingestModel.getSegmentIdFromExternalId(ingestSegment.externalId)
108-
const segmentWatchedPackages = allRundownWatchedPackages.filter(context, (p) =>
109-
p.ingestSources.some((src) => 'segmentId' in src && src.segmentId === segmentId)
108+
const segmentWatchedPackages = allRundownWatchedPackages.filter(
109+
context,
110+
(p) => 'segmentId' in p.source && p.source.segmentId === segmentId
110111
)
111112

112113
let updatedSegmentModel = await regenerateSegmentAndUpdateModel(
@@ -191,8 +192,7 @@ async function checkIfSegmentReferencesUnloadedPackageInfos(
191192
for (const part of segmentModel.parts) {
192193
for (const expectedPackage of part.expectedPackages) {
193194
if (expectedPackage.package.listenToPackageInfoUpdates) {
194-
const loadedPackage = segmentWatchedPackages.getPackage(expectedPackage._id)
195-
if (!loadedPackage) {
195+
if (!segmentWatchedPackages.hasPackage(expectedPackage._id)) {
196196
// The package didn't exist prior to the blueprint running
197197
expectedPackageIdsToCheck.add(expectedPackage._id)
198198
}
Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import type { ExpectedPackage } from '@sofie-automation/blueprints-integration'
22
import type {
3-
ExpectedPackageDB,
43
ExpectedPackageDBType,
54
ExpectedPackageIngestSourcePart,
65
ExpectedPackageIngestSourceRundownBaseline,
@@ -10,6 +9,7 @@ import type { ReadonlyDeep } from 'type-fest'
109

1110
/**
1211
* A simpler form of ExpectedPackageDB that is scoped to the properties relevant to ingest.
12+
* This is limited to be owned by one source, during the save process the documents will be merged
1313
*/
1414
export interface IngestExpectedPackage<
1515
TPackageSource extends { fromPieceType: ExpectedPackageDBType } =
@@ -20,16 +20,5 @@ export interface IngestExpectedPackage<
2020

2121
package: ReadonlyDeep<ExpectedPackage.Any>
2222

23-
// HACK: Temporary single item
24-
ingestSources: [TPackageSource]
25-
}
26-
27-
export function stripExpectedPackageDBToIngestExpectedPackage(
28-
expectedPackage: ExpectedPackageDB
29-
): IngestExpectedPackage {
30-
return {
31-
_id: expectedPackage._id,
32-
package: expectedPackage.package,
33-
ingestSources: expectedPackage.ingestSources as any, // Future: can this be omitted
34-
}
23+
source: TPackageSource
3524
}

packages/job-worker/src/ingest/model/implementation/IngestModelImpl.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ import { generateWriteOpsForLazyDocuments } from './DocumentChangeTracker'
5959
import { IS_PRODUCTION } from '../../../environment'
6060
import { logger } from '../../../logging'
6161
import { NotificationsModelHelper } from '../../../notifications/NotificationsModelHelper'
62-
import { IngestExpectedPackage, stripExpectedPackageDBToIngestExpectedPackage } from '../IngestExpectedPackage'
62+
import { IngestExpectedPackage } from '../IngestExpectedPackage'
6363

6464
export interface IngestModelImplExistingData {
6565
rundown: DBRundown
@@ -709,17 +709,19 @@ function groupExpectedPackages(expectedPackages: ExpectedPackageDB[]) {
709709
case ExpectedPackageDBType.BASELINE_ADLIB_PIECE:
710710
case ExpectedPackageDBType.RUNDOWN_BASELINE_OBJECTS:
711711
baselineExpectedPackages.push({
712-
...stripExpectedPackageDBToIngestExpectedPackage(expectedPackage),
713-
ingestSources: [src],
712+
_id: expectedPackage._id,
713+
package: expectedPackage.package,
714+
source: src,
714715
})
715716
break
716717
case ExpectedPackageDBType.PIECE:
717718
case ExpectedPackageDBType.ADLIB_PIECE:
718719
case ExpectedPackageDBType.ADLIB_ACTION: {
719720
const partPackages = groupedExpectedPackagesByPart.get(src.partId) ?? []
720721
partPackages.push({
721-
...stripExpectedPackageDBToIngestExpectedPackage(expectedPackage),
722-
ingestSources: [src],
722+
_id: expectedPackage._id,
723+
package: expectedPackage.package,
724+
source: src,
723725
})
724726
groupedExpectedPackagesByPart.set(src.partId, partPackages)
725727
break

packages/job-worker/src/ingest/model/implementation/IngestSegmentModelImpl.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ function generateExpectedPackagesForPart(
279279

280280
package: expectedPackage,
281281

282-
ingestSources: [source],
282+
source: source,
283283
}
284284
}
285285

packages/job-worker/src/studio/model/StudioBaselineHelper.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export class StudioBaselineHelper {
4545

4646
package: expectedPackage,
4747

48-
ingestSources: [source],
48+
source: source,
4949
})
5050
}
5151
}
@@ -83,7 +83,7 @@ export class StudioBaselineHelper {
8383

8484
created: Date.now(),
8585
package: pkg.package,
86-
ingestSources: pkg.ingestSources,
86+
ingestSources: [pkg.source],
8787
} satisfies Complete<ExpectedPackageDB>)
8888
),
8989
{

0 commit comments

Comments
 (0)