Files
PortBlog.API/PortBlog.API/Repositories/BlogRepository.cs
T
2024-05-07 02:31:50 +05:30

59 lines
1.7 KiB
C#

using Microsoft.EntityFrameworkCore;
using PortBlog.API.DbContexts;
using PortBlog.API.Entities;
using PortBlog.API.Repositories.Contracts;
namespace PortBlog.API.Repositories
{
public class BlogRepository : IBlogRepository
{
private readonly CvBlogContext _cvBlogContext;
public BlogRepository(CvBlogContext cvBlogContext)
{
_cvBlogContext = cvBlogContext;
}
public async Task<Blog?> GetBlogAsync(string blogUrl, bool includePosts)
{
if (includePosts)
{
return await _cvBlogContext.Blogs.Include(b => b.Posts)
.Where(b => b.BlogUrl == blogUrl).FirstOrDefaultAsync();
}
return await _cvBlogContext.Blogs.Where(b => b.BlogUrl == blogUrl).FirstOrDefaultAsync();
}
public async Task<Post?> GetPostAsync(string blogUrl, string postSlug)
{
return await _cvBlogContext.Posts.Where(p => p.Slug == postSlug && p.BlogUrl == blogUrl).FirstOrDefaultAsync();
}
public async Task<bool> PostExistsAsync(string blogUrl, string postSlug)
{
return await _cvBlogContext.Posts.AnyAsync(p => p.Slug == postSlug && p.BlogUrl == blogUrl);
}
public async Task<bool> BlogExistsAsync(string blogUrl)
{
return await _cvBlogContext.Blogs.AnyAsync(b => b.BlogUrl == blogUrl);
}
public void AddPost(Post post)
{
_cvBlogContext.Posts.Add(post);
}
public void UpdatePost(Post post)
{
_cvBlogContext.Posts.Update(post);
}
public async Task<bool> SaveChangesAsync()
{
return (await _cvBlogContext.SaveChangesAsync() >= 0);
}
}
}