Skip to content

Commit 1a0fbca

Browse files
committed
chore: only save scratchpad segment when rank changes
1 parent 6d18188 commit 1a0fbca

File tree

4 files changed

+29
-4
lines changed

4 files changed

+29
-4
lines changed

packages/job-worker/src/playout/model/implementation/PlayoutRundownModelImpl.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,10 @@ export class PlayoutRundownModelImpl implements PlayoutRundownModel {
107107
const segment = this.#segments.find((s) => s.segment.orphaned === SegmentOrphanedReason.SCRATCHPAD)
108108
if (!segment) return
109109

110-
segment.setScratchpadRank(calculateRankForScratchpadSegment(this.#segments))
111-
this.#segments.sort((a, b) => a.segment._rank - b.segment._rank)
110+
const changed = segment.setScratchpadRank(calculateRankForScratchpadSegment(this.#segments))
111+
if (!changed) return
112112

113+
this.#segments.sort((a, b) => a.segment._rank - b.segment._rank)
113114
this.#scratchPadSegmentHasChanged = true
114115
}
115116
}

packages/job-worker/src/playout/model/implementation/PlayoutSegmentModelImpl.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,13 @@ export class PlayoutSegmentModelImpl implements PlayoutSegmentModel {
3232
* This segment belongs to Playout, so is allowed to be modified in this way
3333
* @param rank New rank for the segment
3434
*/
35-
setScratchpadRank(rank: number): void {
35+
setScratchpadRank(rank: number): boolean {
3636
if (this.#segment.orphaned !== SegmentOrphanedReason.SCRATCHPAD)
3737
throw new Error('setScratchpadRank can only be used on a SCRATCHPAD segment')
3838

39+
if (this.#segment._rank == rank) return false
40+
3941
this.#segment._rank = rank
42+
return true
4043
}
4144
}

packages/job-worker/src/playout/model/implementation/__tests__/PlayoutRundownModelImpl.spec.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,22 @@ describe('PlayoutRundownModelImpl', () => {
323323
expect(model.ScratchPadSegmentHasChanged).toBeTruthy()
324324
})
325325

326+
it('pre-defined: no change', async () => {
327+
const rundown = createBasicDBRundown()
328+
329+
const segment = createBasicDBSegment('seg0', -1)
330+
segment.orphaned = SegmentOrphanedReason.SCRATCHPAD
331+
const segmentModel = new PlayoutSegmentModelImpl(segment, [])
332+
333+
const model = new PlayoutRundownModelImpl(rundown, [segmentModel], [])
334+
335+
model.clearScratchPadSegmentChangedFlag()
336+
model.updateScratchpadSegmentRank()
337+
338+
expect(model.getScratchpadSegment()?.segment._rank).toBe(-1)
339+
expect(model.ScratchPadSegmentHasChanged).toBeFalsy()
340+
})
341+
326342
it('after remove', async () => {
327343
const rundown = createBasicDBRundown()
328344

packages/job-worker/src/playout/model/implementation/__tests__/PlayoutSegmentModelImpl.spec.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,12 @@ describe('PlayoutSegmentModelImpl', () => {
9191
const originalRank = segment._rank
9292
const model = new PlayoutSegmentModelImpl(segment, [])
9393

94-
model.setScratchpadRank(originalRank + 1)
94+
// Set should report change
95+
expect(model.setScratchpadRank(originalRank + 1)).toBeTruthy()
96+
expect(model.segment._rank).toBe(originalRank + 1)
97+
98+
// Set again should report no change
99+
expect(model.setScratchpadRank(originalRank + 1)).toBeFalsy()
95100
expect(model.segment._rank).toBe(originalRank + 1)
96101
})
97102

0 commit comments

Comments
 (0)