public async Task <Tag> Create(string name) { if (!ValidateTagName(name)) { return(null); } var normalizedName = NormalizeTagName(name, _tagNormalization.Value); if (_tagRepo.Any(t => t.NormalizedName == normalizedName)) { return(Get(normalizedName)); } var newTag = new TagEntity { DisplayName = name, NormalizedName = normalizedName }; var tag = await _tagRepo.AddAsync(newTag); await _audit.AddAuditEntry(EventType.Content, AuditEventId.TagCreated, $"Tag '{tag.NormalizedName}' created."); return(new() { DisplayName = newTag.DisplayName, NormalizedName = newTag.NormalizedName }); }
public Task <IReadOnlyList <KeyValuePair <Tag, int> > > GetTagCountList() { return(_tagRepo.SelectAsync(t => new KeyValuePair <Tag, int>(new() { Id = t.Id, DisplayName = t.DisplayName, NormalizedName = t.NormalizedName }, t.Posts.Count))); }
public async Task <IReadOnlyList <KeyValuePair <Tag, int> > > GetHotTagsAsync(int top) { if (!_tagRepo.Any()) { return(new List <KeyValuePair <Tag, int> >()); } var spec = new TagSpec(top); var tags = await _tagRepo.SelectAsync(spec, t => new KeyValuePair <Tag, int>(new() { Id = t.Id, DisplayName = t.DisplayName, NormalizedName = t.NormalizedName }, t.Posts.Count)); return(tags); }