diff --git a/Data/SqliteClientRepository.cs b/Data/SqliteClientRepository.cs index 2aab76a..527eb00 100644 --- a/Data/SqliteClientRepository.cs +++ b/Data/SqliteClientRepository.cs @@ -3,6 +3,7 @@ using System.Threading.Tasks; using Microsoft.Data.Sqlite; using Microsoft.Extensions.Configuration; using Workshop8.Models; +using System; namespace Workshop8.Data { @@ -20,23 +21,76 @@ namespace Workshop8.Data public async Task> GetAllClientsAsync() { - // TODO: implementar SELECT - return new List(); + var clients = new List(); + + using var connection = new SqliteConnection(_connectionString); + await connection.OpenAsync(); + + var command = connection.CreateCommand(); + command.CommandText = "SELECT Id, Nome, Email, CriadoEm FROM Clientes"; + + using var reader = await command.ExecuteReaderAsync(); + while (await reader.ReadAsync()) + { + clients.Add(new Cliente + { + Id = reader.GetInt32(0), + Nome = reader.GetString(1), + Email = reader.GetString(2), + CriadoEm = reader.GetDateTime(3) + }); + } + + return clients; } public async Task AddClientAsync(Cliente c) { - // TODO: implementar INSERT + using var connection = new SqliteConnection(_connectionString); + await connection.OpenAsync(); + + var command = connection.CreateCommand(); + command.CommandText = @" + INSERT INTO Clientes (Nome, Email, CriadoEm) + VALUES ($nome, $email, $criadoEm); + "; + + command.Parameters.AddWithValue("$nome", c.Nome); + command.Parameters.AddWithValue("$email", c.Email); + command.Parameters.AddWithValue("$criadoEm", c.CriadoEm); + + await command.ExecuteNonQueryAsync(); } public async Task UpdateClientAsync(Cliente c) { - // TODO: implementar UPDATE + using var connection = new SqliteConnection(_connectionString); + await connection.OpenAsync(); + + var command = connection.CreateCommand(); + command.CommandText = @" + UPDATE Clientes + SET Nome = $nome, Email = $email + WHERE Id = $id; + "; + + command.Parameters.AddWithValue("$nome", c.Nome); + command.Parameters.AddWithValue("$email", c.Email); + command.Parameters.AddWithValue("$id", c.Id); + + await command.ExecuteNonQueryAsync(); } public async Task DeleteClientAsync(int id) { - // TODO: implementar DELETE + using var connection = new SqliteConnection(_connectionString); + await connection.OpenAsync(); + + var command = connection.CreateCommand(); + command.CommandText = "DELETE FROM Clientes WHERE Id = $id;"; + command.Parameters.AddWithValue("$id", id); + + await command.ExecuteNonQueryAsync(); } } }