UNPKG

unleash-server

Version:

Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.

65 lines 3.15 kB
import { NONE, serializeDates, } from '../../types/index.js'; import { createResponseSchema, getStandardResponses, personalDashboardSchema, } from '../../openapi/index.js'; import Controller from '../../routes/controller.js'; import { personalDashboardProjectDetailsSchema, } from '../../openapi/spec/personal-dashboard-project-details-schema.js'; export default class PersonalDashboardController extends Controller { constructor(config, { openApiService, personalDashboardService, }) { super(config); this.openApiService = openApiService; this.personalDashboardService = personalDashboardService; this.route({ method: 'get', path: '', handler: this.getPersonalDashboard, permission: NONE, middleware: [ openApiService.validPath({ tags: ['Unstable'], summary: 'Get personal dashboard', description: 'Return all projects and flags that are relevant to the user.', operationId: 'getPersonalDashboard', responses: { 200: createResponseSchema('personalDashboardSchema'), ...getStandardResponses(401, 403, 404), }, }), ], }); this.route({ method: 'get', path: '/:projectId', handler: this.getPersonalDashboardProjectDetails, permission: NONE, middleware: [ openApiService.validPath({ tags: ['Unstable'], summary: 'Get personal project details', description: 'Return personal dashboard project events, owners, user roles and onboarding status', operationId: 'getPersonalDashboardProjectDetails', responses: { 200: createResponseSchema('personalDashboardProjectDetailsSchema'), ...getStandardResponses(401, 403, 404), }, }), ], }); } async getPersonalDashboard(req, res) { const user = req.user; const [flags, projects, projectOwners, admins] = await Promise.all([ this.personalDashboardService.getPersonalFeatures(user.id), this.personalDashboardService.getPersonalProjects(user.id), this.personalDashboardService.getProjectOwners(user.id), this.personalDashboardService.getAdmins(), ]); this.openApiService.respondWithValidation(200, res, personalDashboardSchema.$id, { projects, flags, projectOwners, admins }); } async getPersonalDashboardProjectDetails(req, res) { const user = req.user; const projectDetails = await this.personalDashboardService.getPersonalProjectDetails(user.id, req.params.projectId); this.openApiService.respondWithValidation(200, res, personalDashboardProjectDetailsSchema.$id, serializeDates({ ...projectDetails, })); } } //# sourceMappingURL=personal-dashboard-controller.js.map