From 6436e3fda8c82de7e2a81627679afec406db3032 Mon Sep 17 00:00:00 2001 From: Alex Christoffer Rasmussen Date: Mon, 5 Jan 2026 20:47:04 +0100 Subject: [PATCH] refactor: extract rundown switching to a single function in rundown.service (#1930) --- .../src/api-data/rundown/rundown.router.ts | 15 ++------------- .../src/api-data/rundown/rundown.service.ts | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/apps/server/src/api-data/rundown/rundown.router.ts b/apps/server/src/api-data/rundown/rundown.router.ts index 1e711cf5e..fbb8ebcc4 100644 --- a/apps/server/src/api-data/rundown/rundown.router.ts +++ b/apps/server/src/api-data/rundown/rundown.router.ts @@ -22,6 +22,7 @@ import { initRundown, reorderEntry, swapEvents, + loadRundown, ungroupEntries, } from './rundown.service.js'; import { @@ -62,19 +63,7 @@ router.get('/current', async (_req: Request, res: Response) => { */ router.post('/:id/load', paramsWithId, async (req: Request, res: Response) => { try { - // maybe the rundown is already loaded - if (req.params.id === getCurrentRundown().id) { - const projectRundowns = getDataProvider().getProjectRundowns(); - res.status(200).json({ loaded: getCurrentRundown().id, rundowns: normalisedToRundownArray(projectRundowns) }); - return; - } - - const dataProvider = getDataProvider(); - const rundown = dataProvider.getRundown(req.params.id); - const customField = dataProvider.getCustomFields(); - await initRundown(rundown, customField); - - const projectRundowns = getDataProvider().getProjectRundowns(); + const projectRundowns = await loadRundown(req.params.id); res.status(200).json({ loaded: getCurrentRundown().id, rundowns: normalisedToRundownArray(projectRundowns) }); } catch (error) { const message = getErrorMessage(error); diff --git a/apps/server/src/api-data/rundown/rundown.service.ts b/apps/server/src/api-data/rundown/rundown.service.ts index fc8422389..8dc5bedd4 100644 --- a/apps/server/src/api-data/rundown/rundown.service.ts +++ b/apps/server/src/api-data/rundown/rundown.service.ts @@ -27,12 +27,14 @@ import { logger } from '../../classes/Logger.js'; import { createTransaction, customFieldMutation, + getCurrentRundown, rundownCache, rundownMutation, updateBackgroundRundown, } from './rundown.dao.js'; import type { RundownMetadata } from './rundown.types.js'; import { generateEvent, getInsertAfterId, hasChanges } from './rundown.utils.js'; +import { getDataProvider } from '../../classes/data-provider/DataProvider.js'; /** * creates a new entry with given data @@ -596,6 +598,20 @@ function notifyChanges(rundownMetadata: RundownMetadata, revision: number, optio } } +/** + * @throws if the provided id does not exist + */ +export async function loadRundown(id: string) { + const dataProvider = getDataProvider(); + if (id === getCurrentRundown().id) { + return dataProvider.getProjectRundowns(); + } + const rundown = dataProvider.getRundown(id); + const customField = dataProvider.getCustomFields(); + await initRundown(rundown, customField); + return dataProvider.getProjectRundowns(); +} + /** * Sets a new rundown in the cache * and marks it as the currently loaded one