59 lines
1.7 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|