unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
51 lines • 1.64 kB
JavaScript
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