From c3abec0367308792c97cfcc3e97ff2ba4047cee0 Mon Sep 17 00:00:00 2001 From: Kasra Bigdeli Date: Tue, 2 Sep 2025 23:18:48 -0700 Subject: [PATCH] Moved GetAllApps to handler --- .../appdefinition/AppDefinitionHandler.ts | 46 +++++++++++++++++++ .../apps/appdefinition/AppDefinitionRouter.ts | 40 ++++------------ .../oneclick/OneClickAppDeploymentHelper.ts | 8 ++-- 3 files changed, 60 insertions(+), 34 deletions(-) diff --git a/src/handlers/users/apps/appdefinition/AppDefinitionHandler.ts b/src/handlers/users/apps/appdefinition/AppDefinitionHandler.ts index 263b0cb..b4639f2 100644 --- a/src/handlers/users/apps/appdefinition/AppDefinitionHandler.ts +++ b/src/handlers/users/apps/appdefinition/AppDefinitionHandler.ts @@ -82,3 +82,49 @@ export async function registerAppDefinition( throw error } } + +export interface GetAllAppDefinitionsResult extends BaseHandlerResult { + data: { + appDefinitions: any[] + rootDomain: string + captainSubDomain: string + defaultNginxConfig: any + } +} + +export async function getAllAppDefinitions( + dataStore: DataStore, + serviceManager: ServiceManager +): Promise { + Logger.d('Getting all app definitions started') + + try { + const apps = await dataStore.getAppsDataStore().getAppDefinitions() + const appsArray: any[] = [] + + Object.keys(apps).forEach(function (key) { + const app = apps[key] + app.appName = key + app.isAppBuilding = serviceManager.isAppBuilding(key) + app.appPushWebhook = app.appPushWebhook || undefined + appsArray.push(app) + }) + + const defaultNginxConfig = await dataStore.getDefaultAppNginxConfig() + + Logger.d(`App definitions retrieved: ${appsArray.length} apps`) + + return { + message: 'App definitions are retrieved.', + data: { + appDefinitions: appsArray, + rootDomain: dataStore.getRootDomain(), + captainSubDomain: CaptainConstants.configs.captainSubDomain, + defaultNginxConfig: defaultNginxConfig, + }, + } + } catch (error: any) { + Logger.e(`Failed to get app definitions: ${error}`) + throw error + } +} diff --git a/src/routes/user/apps/appdefinition/AppDefinitionRouter.ts b/src/routes/user/apps/appdefinition/AppDefinitionRouter.ts index ffd7642..7c4ecbe 100644 --- a/src/routes/user/apps/appdefinition/AppDefinitionRouter.ts +++ b/src/routes/user/apps/appdefinition/AppDefinitionRouter.ts @@ -1,9 +1,12 @@ import express = require('express') import ApiStatusCodes from '../../../../api/ApiStatusCodes' import BaseApi from '../../../../api/BaseApi' -import { registerAppDefinition } from '../../../../handlers/users/apps/appdefinition/AppDefinitionHandler' +import { + getAllAppDefinitions, + registerAppDefinition, +} from '../../../../handlers/users/apps/appdefinition/AppDefinitionHandler' import InjectionExtractor from '../../../../injection/InjectionExtractor' -import { AppDeployTokenConfig, IAppDef } from '../../../../models/AppDefinition' +import { AppDeployTokenConfig } from '../../../../models/AppDefinition' import CaptainManager from '../../../../user/system/CaptainManager' import CaptainConstants from '../../../../utils/CaptainConstants' import Logger from '../../../../utils/Logger' @@ -59,39 +62,14 @@ router.get('/', function (req, res, next) { InjectionExtractor.extractUserFromInjected(res).user.dataStore const serviceManager = InjectionExtractor.extractUserFromInjected(res).user.serviceManager - const appsArray: IAppDef[] = [] - return dataStore - .getAppsDataStore() - .getAppDefinitions() - .then(function (apps) { - const promises: Promise[] = [] - - Object.keys(apps).forEach(function (key, index) { - const app = apps[key] - app.appName = key - app.isAppBuilding = serviceManager.isAppBuilding(key) - app.appPushWebhook = app.appPushWebhook || undefined - appsArray.push(app) - }) - - return Promise.all(promises) - }) - .then(function () { - return dataStore.getDefaultAppNginxConfig() - }) - .then(function (defaultNginxConfig) { + return getAllAppDefinitions(dataStore, serviceManager) + .then(function (result) { const baseApi = new BaseApi( ApiStatusCodes.STATUS_OK, - 'App definitions are retrieved.' + result.message ) - baseApi.data = { - appDefinitions: appsArray, - rootDomain: dataStore.getRootDomain(), - captainSubDomain: CaptainConstants.configs.captainSubDomain, - defaultNginxConfig: defaultNginxConfig, - } - + baseApi.data = result.data res.send(baseApi) }) .catch(ApiStatusCodes.createCatcher(res)) diff --git a/src/user/oneclick/OneClickAppDeploymentHelper.ts b/src/user/oneclick/OneClickAppDeploymentHelper.ts index 904b34c..1d42552 100644 --- a/src/user/oneclick/OneClickAppDeploymentHelper.ts +++ b/src/user/oneclick/OneClickAppDeploymentHelper.ts @@ -1,5 +1,8 @@ import DataStore from '../../datastore/DataStore' -import { registerAppDefinition } from '../../handlers/users/apps/appdefinition/AppDefinitionHandler' +import { + getAllAppDefinitions, + registerAppDefinition, +} from '../../handlers/users/apps/appdefinition/AppDefinitionHandler' import { registerProject } from '../../handlers/users/ProjectHandler' import { IAppDef } from '../../models/AppDefinition' import { ICaptainDefinition } from '../../models/ICaptainDefinition' @@ -44,8 +47,7 @@ class ApiManager { return registerProject(projectDef, this.dataStore) } getAllApps(): Promise { - // Mock implementation - return Promise.resolve({ appDefinitions: [] }) + return getAllAppDefinitions(this.dataStore, this.serviceManager) } updateConfigAndSave(appName: string, appDef: IAppDef): Promise { // Mock implementation