33 lines
No EOL
1 KiB
C#
33 lines
No EOL
1 KiB
C#
using System.Threading.Tasks;
|
|
using System.Linq;
|
|
using Dapper;
|
|
using Website.Models;
|
|
using Website.Data.States;
|
|
|
|
namespace Website.Data
|
|
{
|
|
public class BlogRepository
|
|
{
|
|
private readonly IDatabaseProvider _dbProvider;
|
|
|
|
public BlogRepository(IDatabaseProvider dbProvider) => _dbProvider = dbProvider;
|
|
|
|
public async Task<BlogPost> GetPostAsync(int id) {
|
|
const string query = "SELECT * FROM blog_posts WHERE post_id=@id AND post_deleted=0";
|
|
using (var connection = _dbProvider.NewConnection()) {
|
|
connection.Open();
|
|
var result = await connection.QueryAsync<BlogPostState>(query, new{id});
|
|
return new BlogPost(result.First());
|
|
}
|
|
}
|
|
|
|
public async Task<BlogPost> GetLatestPostAsync() {
|
|
const string query = "SELECT * FROM blog_posts WHERE post_content<>'' AND post_deleted=0 ORDER BY post_timestamp DESC LIMIT 1";
|
|
using (var connection = _dbProvider.NewConnection()) {
|
|
connection.Open();
|
|
var result = await connection.QueryAsync<BlogPostState>(query);
|
|
return new BlogPost(result.First());
|
|
}
|
|
}
|
|
}
|
|
} |