diff --git a/workers/lib/constants.js b/workers/lib/constants.js index 3b410d9..bb16add 100644 --- a/workers/lib/constants.js +++ b/workers/lib/constants.js @@ -197,6 +197,7 @@ const ENDPOINTS = { ENERGY_FORECAST: '/auth/energy/forecast', ENERGY_FORECAST_HISTORY: '/auth/energy/forecast/history', ENERGY_FORECAST_SETTINGS: '/auth/energy/forecast/settings', + ENERGY_FORECAST_OVERRIDE: '/auth/energy/forecast/override', ENERGY_AVAILABLE: '/auth/energy/available', // Work Order endpoints WORK_ORDERS: '/auth/work-orders', @@ -640,7 +641,8 @@ const ELECTRICITY_EXT_DATA_KEYS = { FORECAST: 'forecast', FORECAST_SETTINGS: 'forecastSettings', FORECAST_HISTORY: 'forecastHistory', - AVAIL_ENERGY: 'availableEnergy' + AVAIL_ENERGY: 'availableEnergy', + FORECAST_OVERRIDE: 'forecastOverride' } const NON_METRIC_KEYS = [ diff --git a/workers/lib/server/handlers/energy.handlers.js b/workers/lib/server/handlers/energy.handlers.js index 7d1e832..42e9cca 100644 --- a/workers/lib/server/handlers/energy.handlers.js +++ b/workers/lib/server/handlers/energy.handlers.js @@ -52,10 +52,21 @@ const setForecastSettings = async (ctx, req) => { }) } +const setForecastOverride = async (ctx, req) => { + return await ctx.dataProxy.requestDataMap( + RPC_METHODS.SET_WRK_EXT_DATA, + { + type: WORKER_TYPES.ELECTRICITY, + key: ELECTRICITY_EXT_DATA_KEYS.FORECAST_OVERRIDE, + value: req.body + }) +} + module.exports = { getEnergyForecast, setAvailableEnergy, getEnergyForecastHistory, setForecastSettings, - getForecastSettings + getForecastSettings, + setForecastOverride } diff --git a/workers/lib/server/routes/energy.routes.js b/workers/lib/server/routes/energy.routes.js index a0877b2..15f0aca 100644 --- a/workers/lib/server/routes/energy.routes.js +++ b/workers/lib/server/routes/energy.routes.js @@ -1,7 +1,7 @@ 'use strict' const { ENDPOINTS, HTTP_METHODS, AUTH_CAPS } = require('../../constants') -const { getEnergyForecast, setAvailableEnergy, getEnergyForecastHistory, setForecastSettings, getForecastSettings } = require('../handlers/energy.handlers') +const { getEnergyForecast, setAvailableEnergy, getEnergyForecastHistory, setForecastSettings, getForecastSettings, setForecastOverride } = require('../handlers/energy.handlers') const { createCachedAuthRoute, createAuthRoute } = require('../lib/routeHelpers') const schemas = require('../schemas/energy.schemas') @@ -65,5 +65,15 @@ module.exports = (ctx) => [ ENDPOINTS.ENERGY_FORECAST_SETTINGS, getForecastSettings ) + }, + { + method: HTTP_METHODS.POST, + url: ENDPOINTS.ENERGY_FORECAST_OVERRIDE, + ...createAuthRoute(ctx, async (ctx, req) => { + return await setForecastOverride(ctx, req) + }, [`${AUTH_CAPS.m}:w`]), + schema: { + body: schemas.body.forecastOverride + } } ] diff --git a/workers/lib/server/schemas/energy.schemas.js b/workers/lib/server/schemas/energy.schemas.js index aea0832..ca76994 100644 --- a/workers/lib/server/schemas/energy.schemas.js +++ b/workers/lib/server/schemas/energy.schemas.js @@ -37,6 +37,19 @@ const schemas = { 'lcoe', 'siteEfficiency' ] + }, + forecastOverride: { + type: 'object', + properties: { + start: { type: 'integer', minimum: 0 }, + end: { type: 'integer', minimum: 0 }, + manualOverrideMine: { type: 'boolean' } + }, + required: [ + 'start', + 'end', + 'manualOverrideMine' + ] } } }