Skip to content

Commit 7404d18

Browse files
committed
wip: update store
1 parent e57fccb commit 7404d18

File tree

4 files changed

+22
-56
lines changed

4 files changed

+22
-56
lines changed

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

Lines changed: 17 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,12 @@ import { ExpectedMediaItemRundown } from '@sofie-automation/corelib/dist/dataMod
22
import { ExpectedPlayoutItemRundown } from '@sofie-automation/corelib/dist/dataModel/ExpectedPlayoutItem'
33
import {
44
ExpectedMediaItemId,
5-
ExpectedPackageId,
65
ExpectedPlayoutItemId,
76
PartId,
87
RundownId,
98
} from '@sofie-automation/corelib/dist/dataModel/Ids'
109
import { ReadonlyDeep } from 'type-fest'
11-
import {
12-
diffAndReturnLatestObjects,
13-
DocumentChanges,
14-
getDocumentChanges,
15-
setValuesAndTrackChanges,
16-
setValuesAndTrackChangesFunc,
17-
} from './utils'
10+
import { diffAndReturnLatestObjects, DocumentChanges, getDocumentChanges, setValuesAndTrackChanges } from './utils'
1811
import type { IngestExpectedPackage } from '../IngestExpectedPackage'
1912
import { ExpectedPackageDBType } from '@sofie-automation/corelib/dist/dataModel/ExpectedPackages'
2013

@@ -25,7 +18,7 @@ export class ExpectedPackagesStore<TPackageSource extends { fromPieceType: Expec
2518

2619
#expectedMediaItemsWithChanges = new Set<ExpectedMediaItemId>()
2720
#expectedPlayoutItemsWithChanges = new Set<ExpectedPlayoutItemId>()
28-
#expectedPackagesWithChanges = new Set<ExpectedPackageId>()
21+
#expectedPackagesHasChanges = false
2922

3023
get expectedMediaItems(): ReadonlyDeep<ExpectedMediaItemRundown[]> {
3124
return this.#expectedMediaItems
@@ -42,7 +35,7 @@ export class ExpectedPackagesStore<TPackageSource extends { fromPieceType: Expec
4235
return (
4336
this.#expectedMediaItemsWithChanges.size > 0 ||
4437
this.#expectedPlayoutItemsWithChanges.size > 0 ||
45-
this.#expectedPackagesWithChanges.size > 0
38+
this.#expectedPackagesHasChanges
4639
)
4740
}
4841

@@ -52,14 +45,14 @@ export class ExpectedPackagesStore<TPackageSource extends { fromPieceType: Expec
5245
get expectedPlayoutItemsChanges(): DocumentChanges<ExpectedPlayoutItemRundown> {
5346
return getDocumentChanges(this.#expectedPlayoutItemsWithChanges, this.#expectedPlayoutItems)
5447
}
55-
get expectedPackagesChanges(): DocumentChanges<IngestExpectedPackage<TPackageSource>> {
56-
return getDocumentChanges(this.#expectedPackagesWithChanges, this.#expectedPackages)
57-
}
48+
// get expectedPackagesChanges(): DocumentChanges<IngestExpectedPackage<TPackageSource>> {
49+
// return getDocumentChanges(this.#expectedPackagesWithChanges, this.#expectedPackages)
50+
// }
5851

5952
clearChangedFlags(): void {
6053
this.#expectedMediaItemsWithChanges.clear()
6154
this.#expectedPlayoutItemsWithChanges.clear()
62-
this.#expectedPackagesWithChanges.clear()
55+
this.#expectedPackagesHasChanges = false
6356
}
6457

6558
#rundownId: RundownId
@@ -88,9 +81,7 @@ export class ExpectedPackagesStore<TPackageSource extends { fromPieceType: Expec
8881
for (const expectedMediaItem of this.#expectedMediaItems) {
8982
this.#expectedMediaItemsWithChanges.add(expectedMediaItem._id)
9083
}
91-
for (const expectedPackage of this.#expectedPackages) {
92-
this.#expectedPackagesWithChanges.add(expectedPackage.packageId)
93-
}
84+
this.#expectedPackagesHasChanges = true
9485
}
9586
}
9687

@@ -110,9 +101,12 @@ export class ExpectedPackagesStore<TPackageSource extends { fromPieceType: Expec
110101
rundownId,
111102
partId,
112103
})
113-
setValuesAndTrackChangesFunc(this.#expectedPackagesWithChanges, this.#expectedPackages, (pkg) =>
114-
updatePackageSource(pkg.source)
115-
)
104+
for (const expectedPackage of this.#expectedPackages) {
105+
const mutatorChanged = updatePackageSource(expectedPackage.source)
106+
107+
// The doc changed, track it as such
108+
if (mutatorChanged) this.#expectedPackagesHasChanges = true
109+
}
116110
}
117111

118112
compareToPreviousData(oldStore: ExpectedPackagesStore<TPackageSource>): void {
@@ -127,11 +121,7 @@ export class ExpectedPackagesStore<TPackageSource extends { fromPieceType: Expec
127121
oldStore.#expectedMediaItems,
128122
this.#expectedMediaItems
129123
)
130-
diffAndReturnLatestObjects(
131-
this.#expectedPackagesWithChanges,
132-
oldStore.#expectedPackages,
133-
this.#expectedPackages
134-
)
124+
this.#expectedPackagesHasChanges = true
135125
}
136126

137127
setExpectedPlayoutItems(expectedPlayoutItems: ExpectedPlayoutItemRundown[]): void {
@@ -161,11 +151,7 @@ export class ExpectedPackagesStore<TPackageSource extends { fromPieceType: Expec
161151
)
162152
}
163153
setExpectedPackages(expectedPackages: IngestExpectedPackage<TPackageSource>[]): void {
164-
// nocommit - this wont work because of the clashing ids...
165-
this.#expectedPackages = diffAndReturnLatestObjects(
166-
this.#expectedPackagesWithChanges,
167-
this.#expectedPackages,
168-
expectedPackages
169-
)
154+
this.#expectedPackagesHasChanges = true
155+
this.#expectedPackages = [...expectedPackages]
170156
}
171157
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ export class IngestPartModelImpl implements IngestPartModel {
178178

179179
/**
180180
* This IngestPartModel replaces an existing one.
181-
* Run some comparisons to ensure that
181+
* Run some comparisons to ensure that the changed flags are set correctly
182182
* @param previousModel
183183
*/
184184
compareToPreviousModel(previousModel: IngestPartModelImpl): void {

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

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { normalizeArrayToMap } from '@sofie-automation/corelib/dist/lib'
2020
export class SaveIngestModelHelper {
2121
readonly #rundownId: RundownId
2222

23-
#expectedPackages = new DocumentChangeTracker<IngestExpectedPackage<any>>()
23+
#expectedPackages: IngestExpectedPackage<any>[] = []
2424
#expectedPlayoutItems = new DocumentChangeTracker<ExpectedPlayoutItem>()
2525
#expectedMediaItems = new DocumentChangeTracker<ExpectedMediaItem>()
2626

@@ -38,7 +38,7 @@ export class SaveIngestModelHelper {
3838
store: ExpectedPackagesStore<TPackageSource>,
3939
deleteAll?: boolean
4040
): void {
41-
this.#expectedPackages.addChanges(store.expectedPackagesChanges, deleteAll ?? false)
41+
if (!deleteAll) this.#expectedPackages.push(...store.expectedPackages)
4242
this.#expectedPlayoutItems.addChanges(store.expectedPlayoutItemsChanges, deleteAll ?? false)
4343
this.#expectedMediaItems.addChanges(store.expectedMediaItemsChanges, deleteAll ?? false)
4444
}
@@ -68,7 +68,6 @@ export class SaveIngestModelHelper {
6868
commit(context: JobContext): Array<Promise<unknown>> {
6969
// Log deleted ids:
7070
const deletedIds: { [key: string]: ProtectedString<any>[] } = {
71-
expectedPackages: this.#expectedPackages.getDeletedIds(),
7271
expectedPlayoutItems: this.#expectedPlayoutItems.getDeletedIds(),
7372
expectedMediaItems: this.#expectedMediaItems.getDeletedIds(),
7473
segments: this.#segments.getDeletedIds(),
@@ -84,13 +83,7 @@ export class SaveIngestModelHelper {
8483
}
8584

8685
return [
87-
writeExpectedPackagesChangesForRundown(
88-
context,
89-
this.#rundownId,
90-
// This isn't using the expectedPackages store fully, because we know the content of the documents is immutable
91-
// But it is easier to keep using the store for the sake of consistency
92-
Array.from(this.#expectedPackages.getDocumentsToSave().values())
93-
),
86+
writeExpectedPackagesChangesForRundown(context, this.#rundownId, this.#expectedPackages),
9487
context.directCollections.ExpectedPlayoutItems.bulkWrite(this.#expectedPlayoutItems.generateWriteOps()),
9588
context.directCollections.ExpectedMediaItems.bulkWrite(this.#expectedMediaItems.generateWriteOps()),
9689

@@ -131,7 +124,7 @@ async function writeExpectedPackagesChangesForRundown(
131124
// Add the source to the existing document
132125
partialDoc.ingestSources.push(doc.source)
133126

134-
// TODO - should we check for duplicates entries?
127+
// Maybe this should check for duplicates, but the point where these documents are generated should be handling that.
135128
} else {
136129
// Add a new document
137130
// Future: omit 'playoutSources from this doc

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

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -67,19 +67,6 @@ export function setValuesAndTrackChanges<T extends { _id: ProtectedString<any> }
6767
}
6868
}
6969

70-
export function setValuesAndTrackChangesFunc<T extends { _id: ProtectedString<any> }>(
71-
changedIds: Set<T['_id']>,
72-
objects: readonly T[],
73-
mutator: (obj: T) => boolean
74-
): void {
75-
for (const obj of objects) {
76-
const mutatorChanged = mutator(obj)
77-
78-
// The doc changed, track it as such
79-
if (mutatorChanged) changedIds.add(obj._id)
80-
}
81-
}
82-
8370
export function addManyToSet<T>(set: Set<T>, iter: Iterable<T>): void {
8471
for (const val of iter) {
8572
set.add(val)

0 commit comments

Comments
 (0)