unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
56 lines • 2.16 kB
JavaScript
import { parseSearchOperatorValue } from './search-utils.js';
export class FeatureSearchService {
constructor({ featureSearchStore }, _config) {
this.convertToQueryParams = (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);
}
['tag', 'segment', 'project'].forEach((field) => {
if (params[field]) {
const parsed = parseSearchOperatorValue(field, params[field]);
if (parsed)
queryParams.push(parsed);
}
});
return queryParams;
};
this.featureSearchStore = featureSearchStore;
}
async search(params) {
const queryParams = 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