Something went wrong. Try again.
A personal wiki written in .NET
Something went wrong. Try again.
1.9 kB · 51 lines
C#
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051using System;using System.Collections.Generic;using System.Threading.Tasks;using Dapper;
namespace MiniWiki.Data.Users;
public class UsersDatabaseRepository(IDbConnectionFactory connectionFactory) : IUsersRepository{ public async Task<User?> GetByIdAsync(string id) { using var connection = connectionFactory.CreateConnection(); return await connection.QueryFirstOrDefaultAsync<User>("SELECT * FROM users WHERE id = @id", new { id }); }
public async Task<User?> GetByEmailAsync(string email) { using var connection = connectionFactory.CreateConnection(); return await connection.QueryFirstOrDefaultAsync<User>("SELECT * FROM users WHERE email = @email", new { email }); }
public async Task<User[]> GetMultiple(IEnumerable<string> ids) { const string query = "SELECT * FROM users WHERE id IN @ids"; using var connection = connectionFactory.CreateConnection(); return [.. await connection.QueryAsync<User>(query, new { ids })]; }
public async Task<long> GetUserCount() { const string query = "SELECT COUNT(id) FROM users"; using var connection = connectionFactory.CreateConnection(); return await connection.QueryFirstOrDefaultAsync<long>(query); }
public async Task<User> CreateAsync(User user) { using var connection = connectionFactory.CreateConnection();
const string insertStatement = """ INSERT INTO users(id, display_name, email, password_hash, is_admin, created_at, updated_at) VALUES(@Id,@DisplayName,@Email,@PasswordHash, @IsAdmin,@CreatedAt,@UpdatedAt) """;
await connection.ExecuteAsync(insertStatement, user); return user; }
public Task UpdateAsync(User user) => throw new NotImplementedException();}