using DataAccessLayer.Sql; using Microsoft.Data.SqlClient; namespace DataAccessLayer.Repositories { public abstract class Repository(ISqlConnectionFactory connectionFactory) where T : class { protected async Task CreateConnection() { var connection = connectionFactory.CreateConnection(); await connection.OpenAsync(); return connection; } public abstract Task Add(T entity); public abstract Task> GetAll(int? limit, int? offset); public abstract Task GetById(Guid id); public abstract Task Update(T entity); public abstract Task Delete(Guid id); protected abstract T MapToEntity(SqlDataReader reader); } }