UNPKG

unleash-server

Version:

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

44 lines 2.09 kB
import { SKIP_CHANGE_REQUEST } from '../../types/index.js'; export class ChangeRequestAccessReadModel { constructor(db, accessService) { this.db = db; this.accessService = accessService; } async canBypassChangeRequest(project, environment, user) { const [canSkipChangeRequest, changeRequestEnabled] = await Promise.all([ user ? this.accessService.hasPermission(user, SKIP_CHANGE_REQUEST, project, environment) : Promise.resolve(false), this.isChangeRequestsEnabled(project, environment), ]); return canSkipChangeRequest || !changeRequestEnabled; } async canBypassChangeRequestForProject(project, user) { const [canSkipChangeRequest, changeRequestEnabled] = await Promise.all([ user ? this.accessService.hasPermission(user, SKIP_CHANGE_REQUEST, project) : Promise.resolve(false), this.isChangeRequestsEnabledForProject(project), ]); return canSkipChangeRequest || !changeRequestEnabled; } async isChangeRequestsEnabled(project, environment) { const result = await this.db.raw(`SELECT EXISTS(SELECT 1 FROM change_request_settings WHERE environment = ? and project = ?) AS present`, [environment, project]); const { present } = result.rows[0]; return present; } async isChangeRequestsEnabledForProject(project) { const result = await this.db('change_request_settings') .join('project_environments', function () { return this.on('change_request_settings.project', 'project_environments.project_id').andOn('change_request_settings.environment', 'project_environments.environment_name'); }) .where('change_request_settings.project', project) .select('change_request_settings.project') .first(); return Boolean(result); } } //# sourceMappingURL=sql-change-request-access-read-model.js.map