diff --git a/apps/server/src/classes/data-provider/DataProvider.ts b/apps/server/src/classes/data-provider/DataProvider.ts index 031a537d5..ae1cad1e8 100644 --- a/apps/server/src/classes/data-provider/DataProvider.ts +++ b/apps/server/src/classes/data-provider/DataProvider.ts @@ -11,6 +11,7 @@ import { UserFields, Alias, Settings, + GoogleSheet, } from 'ontime-types'; import { data, db } from '../../modules/loadDb.js'; @@ -58,6 +59,15 @@ export class DataProvider { await this.persist(); } + static getGoogleSheet() { + return data.googleSheet; + } + + static async setGoogleSheet(newData: GoogleSheet) { + data.googleSheet = { ...newData }; + await this.persist(); + } + static getOsc() { return data.osc; } diff --git a/apps/server/src/classes/data-provider/DataProvider.utils.ts b/apps/server/src/classes/data-provider/DataProvider.utils.ts index eed142912..7b7b172fe 100644 --- a/apps/server/src/classes/data-provider/DataProvider.utils.ts +++ b/apps/server/src/classes/data-provider/DataProvider.utils.ts @@ -6,12 +6,13 @@ import { DatabaseModel } from 'ontime-types'; * @param {object} newData */ export function safeMerge(existing: DatabaseModel, newData: Partial) { - const { rundown, project, settings, viewSettings, osc, aliases, userFields } = newData || {}; + const { rundown, project, settings, googleSheet, viewSettings, osc, aliases, userFields } = newData || {}; return { ...existing, rundown: rundown ?? existing.rundown, project: { ...existing.project, ...project }, settings: { ...existing.settings, ...settings }, + googleSheet: { ...existing.googleSheet, ...googleSheet }, viewSettings: { ...existing.viewSettings, ...viewSettings }, aliases: aliases ?? existing.aliases, userFields: { diff --git a/apps/server/src/models/dataModel.ts b/apps/server/src/models/dataModel.ts index 749e1e120..ca19073cc 100644 --- a/apps/server/src/models/dataModel.ts +++ b/apps/server/src/models/dataModel.ts @@ -20,6 +20,10 @@ export const dbModel: DatabaseModel = { timeFormat: '24', language: 'en', }, + googleSheet: { + worksheet: '', + id: '', + }, viewSettings: { overrideStyles: false, normalColor: '#ffffffcc', diff --git a/packages/types/src/definitions/DataModel.type.ts b/packages/types/src/definitions/DataModel.type.ts index 71282e904..d2c48c666 100644 --- a/packages/types/src/definitions/DataModel.type.ts +++ b/packages/types/src/definitions/DataModel.type.ts @@ -5,6 +5,7 @@ import { OSCSettings } from './core/OscSettings.type.js'; import { Settings } from './core/Settings.type.js'; import { UserFields } from './core/UserFields.type.js'; import { ViewSettings } from './core/Views.type.js'; +import { GoogleSheet } from '../index.js'; export type DatabaseModel = { rundown: OntimeRundown; @@ -13,5 +14,6 @@ export type DatabaseModel = { viewSettings: ViewSettings; aliases: Alias[]; userFields: UserFields; + googleSheet: GoogleSheet; osc: OSCSettings; }; diff --git a/packages/types/src/definitions/core/GoogleSheet.type.ts b/packages/types/src/definitions/core/GoogleSheet.type.ts new file mode 100644 index 000000000..85a11a315 --- /dev/null +++ b/packages/types/src/definitions/core/GoogleSheet.type.ts @@ -0,0 +1,4 @@ +export type GoogleSheet = { + worksheet: string; + id: string; +}; diff --git a/packages/types/src/index.ts b/packages/types/src/index.ts index e2afa6fe6..699a2a9fc 100644 --- a/packages/types/src/index.ts +++ b/packages/types/src/index.ts @@ -33,6 +33,9 @@ export type { OSCSettings, OscSubscription, OscSubscriptionOptions } from './def // ---> HTTP +// ---> Google Sheet +export type { GoogleSheet } from './definitions/core/GoogleSheet.type.js'; + // SERVER RESPONSES export type { NetworkInterface, GetInfo } from './api/ontime-controller/BackendResponse.type.js'; export type { GetRundownCached } from './api/rundown-controller/BackendResponse.type.js';