diff --git a/package.json b/package.json index 321fc11d..bd308f56 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,6 @@ "sanitize-filename": "1.6.3", "sass": "1.87.0", "semver": "7.7.1", - "unstorage": "1.17.5", "uuid": "11.1.0", "vuetify": "3.12.5", "vuetify-nuxt-module": "0.18.7", diff --git a/server/api/microservice/app/get_is_app_ready.get.js b/server/api/microservice/app/get_is_app_ready.get.js new file mode 100644 index 00000000..9f3f962b --- /dev/null +++ b/server/api/microservice/app/get_is_app_ready.get.js @@ -0,0 +1,19 @@ +// Third party imports +import { createError, defineEventHandler } from "h3"; + +// Local imports +import { getIsAppReady } from "@geode/opengeodeweb-front/server/utils/server_config.js"; + +export default defineEventHandler(async () => { + try { + const isReady = await getIsAppReady(); + console.log(`IS_APP_READY is ${isReady}`); + return { statusCode: 200, isReady }; + } catch (error) { + console.log(error); + throw createError({ + statusCode: error.statusCode, + statusMessage: error.statusMessage ?? error.message, + }); + } +}); diff --git a/server/api/microservice/app/set_is_app_ready.post.js b/server/api/microservice/app/set_is_app_ready.post.js new file mode 100644 index 00000000..8d32a8c7 --- /dev/null +++ b/server/api/microservice/app/set_is_app_ready.post.js @@ -0,0 +1,25 @@ +// Third party imports +import { createError, defineEventHandler, readBody } from "h3"; + +// Local imports +import { setIsAppReady } from "@geode/opengeodeweb-front/server/utils/server_config.js"; + +export default defineEventHandler(async (event) => { + try { + const { isReady } = await readBody(event); + if (!isReady) { + throw createError({ statusCode: 400, statusMessage: "isReady is required" }); + } + + await setIsAppReady(isReady); + console.log(`Updated IS_APP_READY to ${isReady}`); + + return { statusCode: 200, isReady }; + } catch (error) { + console.log(error); + throw createError({ + statusCode: error.statusCode, + statusMessage: error.statusMessage ?? error.message, + }); + } +}); diff --git a/server/utils/server_config.js b/server/utils/server_config.js index 6a3eaf84..62dee986 100644 --- a/server/utils/server_config.js +++ b/server/utils/server_config.js @@ -1,32 +1,37 @@ -import { createStorage, prefixStorage } from "unstorage"; - -const storage = createStorage(); -const config = prefixStorage(storage, "config"); +const storage = new Map(); function getAppBaseUrl() { - return config.getItem("APP_BASE_URL"); + return storage.get("APP_BASE_URL"); } function setAppBaseUrl(baseUrl) { - return config.setItem("APP_BASE_URL", baseUrl); + return storage.set("APP_BASE_URL", baseUrl); } function getBackBaseUrl() { - return config.getItem("BACK_BASE_URL"); + return storage.get("BACK_BASE_URL"); } function setBackBaseUrl(baseUrl) { - return config.setItem("BACK_BASE_URL", baseUrl); + return storage.set("BACK_BASE_URL", baseUrl); } function getViewerBaseUrl() { - return config.getItem("VIEWER_BASE_URL"); + return storage.get("VIEWER_BASE_URL"); } function setViewerBaseUrl(baseUrl) { - return config.setItem("VIEWER_BASE_URL", baseUrl); + return storage.set("VIEWER_BASE_URL", baseUrl); +} +function getIsAppReady() { + return storage.get("IS_APP_READY") ?? false; +} +function setIsAppReady(isAppReady) { + return storage.set("IS_APP_READY", isAppReady); } export { getAppBaseUrl, - setAppBaseUrl, getBackBaseUrl, + getIsAppReady, getViewerBaseUrl, + setAppBaseUrl, setBackBaseUrl, + setIsAppReady, setViewerBaseUrl, }; diff --git a/shared/scripts.js b/shared/scripts.js index f754488a..92809fd4 100644 --- a/shared/scripts.js +++ b/shared/scripts.js @@ -53,4 +53,20 @@ function setViewerBaseUrl(appBaseUrl, viewerBaseUrl) { return fetchSchema({ schema, params, baseURL: appBaseUrl }); } -export { setAppBaseUrl, setBackBaseUrl, setViewerBaseUrl }; +function setIsAppReady(appBaseUrl, isReady) { + console.log("[API] setIsAppReady", isReady); + const schema = { + $id: "/api/microservice/app/set_is_app_ready", + methods: ["POST"], + type: "object", + properties: { + isReady: { type: "boolean" }, + }, + required: ["isReady"], + additionalProperties: false, + }; + const params = { isReady }; + return fetchSchema({ schema, params, baseURL: appBaseUrl }); +} + +export { setAppBaseUrl, setBackBaseUrl, setIsAppReady, setViewerBaseUrl };