Files
yes.blog/Yes.Application/Admins/Articles/ArticleService.cs
2025-05-13 11:27:58 +08:00

34 lines
833 B
C#

namespace Yes.Application.Admins.Articles
{
public class ArticleService(BlogDbContext db) : IArticleService
{
private readonly BlogDbContext _db = db;
public async Task<bool> IsSlugInUse(string slug)
{
return await _db.Articles.AnyAsync(x => x.Slug == slug && x.Status!= ArticleStatusEnum.Deleted);
}
public async Task<string> CreateUniqueSlug()
{
var times = 5;
var slug = UniqueShortIdGenerator.CreateUniqueShortString();
while (await IsSlugInUse(slug))
{
times--;
if (times <= 0)
{
throw new GeneratorSlugException();
}
slug = UniqueShortIdGenerator.CreateUniqueShortString();
}
return slug;
}
}
}