UNPKG

unleash-server

Version:

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

70 lines 2.85 kB
import { parseSearchOperatorValue } from './search-utils.js'; export class FeatureSearchService { constructor({ featureSearchStore }, _config, privateProjectChecker) { this.convertToQueryParams = async (params) => { const queryParams = []; if (params.state) { const parsedState = parseSearchOperatorValue('stale', params.state); if (parsedState) { queryParams.push(parsedState); } } if (params.createdAt) { const parsed = parseSearchOperatorValue('features.created_at', params.createdAt); if (parsed) queryParams.push(parsed); } if (params.createdBy) { const parsed = parseSearchOperatorValue('users.id', params.createdBy); if (parsed) queryParams.push(parsed); } if (params.type) { const parsed = parseSearchOperatorValue('features.type', params.type); if (parsed) queryParams.push(parsed); } if (params.lastSeenAt) { const parsed = parseSearchOperatorValue('lastSeenAt', params.lastSeenAt); if (parsed) queryParams.push(parsed); } if (params.favorite) { const parsed = parseSearchOperatorValue('favorite', params.favorite); if (parsed) queryParams.push(parsed); } ['tag', 'segment', 'project'].forEach((field) => { if (params[field]) { const parsed = parseSearchOperatorValue(field, params[field]); if (parsed) queryParams.push(parsed); } }); const accessibleProjects = await this.privateProjectChecker.getUserAccessibleProjects(params.userId); if (accessibleProjects.mode === 'limited') { queryParams.push({ field: 'features.project', operator: 'IS_ANY_OF', values: accessibleProjects.projects, }); } return queryParams; }; this.featureSearchStore = featureSearchStore; this.privateProjectChecker = privateProjectChecker; } async search(params) { const queryParams = await this.convertToQueryParams(params); const { features, total } = await this.featureSearchStore.searchFeatures({ ...params, limit: params.limit, sortBy: params.sortBy || 'createdAt', }, queryParams); return { features, total, }; } } //# sourceMappingURL=feature-search-service.js.map