Skip to content

Commit 39dee8a

Browse files
committed
chore: first, fetch the Devices, compile a list of StudioIds and then fetch Playlists, to use the indexes in place
1 parent 302bbc3 commit 39dee8a

File tree

1 file changed

+38
-30
lines changed

1 file changed

+38
-30
lines changed

meteor/server/cronjobs.ts

Lines changed: 38 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -91,38 +91,46 @@ async function restartCasparCG(systemSettings: ICoreSystemSettings | undefined,
9191
let shouldRetryAttempt = false
9292
const ps: Array<Promise<any>> = []
9393

94-
const [casparcgAndParentDevices, activePlaylists] = await Promise.all([
95-
PeripheralDevices.findFetchAsync(
96-
{
97-
type: PeripheralDeviceType.PLAYOUT,
98-
subType: { $in: [PERIPHERAL_SUBTYPE_PROCESS, TSR.DeviceType.CASPARCG] },
94+
const casparcgAndParentDevices = (await PeripheralDevices.findFetchAsync(
95+
{
96+
type: PeripheralDeviceType.PLAYOUT,
97+
subType: { $in: [PERIPHERAL_SUBTYPE_PROCESS, TSR.DeviceType.CASPARCG] },
98+
},
99+
{
100+
projection: {
101+
_id: 1,
102+
subType: 1,
103+
parentDeviceId: 1,
104+
lastSeen: 1,
105+
studioAndConfigId: 1,
99106
},
100-
{
101-
projection: {
102-
_id: 1,
103-
subType: 1,
104-
parentDeviceId: 1,
105-
lastSeen: 1,
106-
studioAndConfigId: 1,
107-
},
108-
}
109-
) as Promise<
110-
Array<Pick<PeripheralDevice, '_id' | 'subType' | 'parentDeviceId' | 'lastSeen' | 'studioAndConfigId'>>
111-
>,
112-
RundownPlaylists.findFetchAsync(
113-
{
114-
activationId: {
115-
$exists: true,
116-
},
107+
}
108+
)) as Array<Pick<PeripheralDevice, '_id' | 'subType' | 'parentDeviceId' | 'lastSeen' | 'studioAndConfigId'>>
109+
110+
const relevantStudioIds = Array.from(
111+
new Set(
112+
casparcgAndParentDevices
113+
.map((device) => device.studioAndConfigId?.studioId)
114+
.filter((id) => id !== undefined)
115+
)
116+
)
117+
118+
const activePlaylists = (await RundownPlaylists.findFetchAsync(
119+
{
120+
activationId: {
121+
$exists: true,
117122
},
118-
{
119-
projection: {
120-
_id: 1,
121-
studioId: 1,
122-
},
123-
}
124-
) as Promise<Array<Pick<DBRundownPlaylist, '_id' | 'studioId'>>>,
125-
])
123+
studioId: {
124+
$in: relevantStudioIds,
125+
},
126+
},
127+
{
128+
projection: {
129+
_id: 1,
130+
studioId: 1,
131+
},
132+
}
133+
)) as Array<Pick<DBRundownPlaylist, '_id' | 'studioId'>>
126134

127135
const deviceMap = normalizeArrayToMap(casparcgAndParentDevices, '_id')
128136

0 commit comments

Comments
 (0)