using Dapper; using Npgsql; using Ventas.Core.Interfaces; namespace Ventas.Infrastructure.Repositories; public class CatalogoRepository : ICatalogoRepository { private readonly string _connectionString; public CatalogoRepository(string connectionString) { _connectionString = connectionString; } public async Task>> QuerySpAsync(string sp, object parameters) { using var connection = new NpgsqlConnection(_connectionString); var rows = await connection.QueryAsync(sp, parameters, commandType: System.Data.CommandType.StoredProcedure); return rows.Select(r => (Dictionary)(IDictionary)r!); } public async Task ExecuteSpAsync(string sp, object parameters) { using var connection = new NpgsqlConnection(_connectionString); await connection.ExecuteAsync(sp, parameters, commandType: System.Data.CommandType.StoredProcedure); return "ok"; } public async Task QuerySingleSpAsync(string sp, object parameters) { using var connection = new NpgsqlConnection(_connectionString); return await connection.QuerySingleOrDefaultAsync(sp, parameters, commandType: System.Data.CommandType.StoredProcedure); } }