UNPKG

unleash-server

Version:

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

51 lines 1.64 kB
import { tagSchema } from './tag-schema.js'; import NameExistsError from '../error/name-exists-error.js'; import { TagCreatedEvent, TagDeletedEvent } from '../types/index.js'; export default class TagService { constructor({ tagStore }, { getLogger }, eventService) { this.tagStore = tagStore; this.eventService = eventService; this.logger = getLogger('services/tag-service.js'); } async getTags() { return this.tagStore.getAll(); } async getTagsByType(type) { return this.tagStore.getTagsByType(type); } async getTag({ type, value }) { return this.tagStore.getTag(type, value); } async validateUnique(tag) { const exists = await this.tagStore.exists(tag); if (exists) { throw new NameExistsError(`A tag of ${tag} already exists`); } } async validate(tag) { const data = (await tagSchema.validateAsync(tag)); await this.validateUnique(tag); return data; } async createTag(tag, auditUser) { const trimmedTag = { ...tag, value: tag.value.trim(), }; const data = await this.validate(trimmedTag); await this.tagStore.createTag(data); await this.eventService.storeEvent(new TagCreatedEvent({ data, auditUser, })); return data; } async deleteTag(tag, auditUser) { await this.tagStore.delete(tag); await this.eventService.storeEvent(new TagDeletedEvent({ data: tag, auditUser, })); } } //# sourceMappingURL=tag-service.js.map