Something went wrong. Try again.
A personal wiki written in .NET
Something went wrong. Try again.
2.2 kB · 52 lines
C#
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152using System.Collections.Generic;using System.Threading.Tasks;using Dapper;
namespace MiniWiki.Data.Documents;
public class DocumentsDatabaseRepository(IDbConnectionFactory connectionFactory) : IDocumentsRepository{ public async Task<IEnumerable<Document>> GetLatestDocumentsAsync(int count) { const string query = "SELECT * FROM documents ORDER BY updated_at DESC LIMIT @count"; using var connection = connectionFactory.CreateConnection(); return await connection.QueryAsync<Document>(query, new { count }); }
public Task<IEnumerable<Document>> GetMultipleAsync(IEnumerable<string> slugs) { var query = "SELECT * FROM documents WHERE slug IN @slugs"; var connection = connectionFactory.CreateConnection(); return connection.QueryAsync<Document>(query, new { slugs }); }
public async Task<Document> CreateAsync(Document document) { const string statement = """ INSERT INTO documents (title, slug, body, created_at, updated_at, created_by, updated_by) VALUES (@Title, @Slug, @Body, @CreatedAt, @UpdatedAt, @CreatedBy, @UpdatedBy) """; using var connection = connectionFactory.CreateConnection(); await connection.ExecuteAsync(statement, document); return document; }
public async Task<Document> UpdateAsync(Document document) { const string statement = """ UPDATE documents SET title = @Title, slug=@Slug, body=@Body, updated_at=@UpdatedAt, updated_by=@UpdatedBy WHERE slug=@Slug """; using var connection = connectionFactory.CreateConnection(); await connection.ExecuteAsync(statement, document); return document; }
public async Task<Document?> GetBySlugAsync(string slug) { const string query = "SELECT * FROM documents WHERE slug = @slug"; using var connection = connectionFactory.CreateConnection(); return await connection.QuerySingleOrDefaultAsync<Document>(query, new { slug }); }}