diff --git a/FuelAndLubricants/FuelAndLubricants/Repositories/Implementations/CarRepository.cs b/FuelAndLubricants/FuelAndLubricants/Repositories/Implementations/CarRepository.cs index e8dccae..e6aab44 100644 --- a/FuelAndLubricants/FuelAndLubricants/Repositories/Implementations/CarRepository.cs +++ b/FuelAndLubricants/FuelAndLubricants/Repositories/Implementations/CarRepository.cs @@ -3,6 +3,7 @@ using Dapper; using FuelAndLubricants.Entities; using Microsoft.Extensions.Logging; using Newtonsoft.Json; +using Npgsql; namespace FuelAndLubricants.Repositories.Implementations; @@ -20,23 +21,103 @@ public class CarRepository : ICarRepository public void CreateCar(Car car) { + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(car)); + + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryInsert = @"INSERT INTO Car (Car_Mark, Car_Model, Car_Type, License, Consumption_Rate) +VALUES (@Car_Mark, @Car_Model, @Car_Type, @License, @Consumption_Rate)"; + connection.Execute(queryInsert, car); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } } public void DeleteCar(int id) { + _logger.LogInformation("Удаление объекта"); + _logger.LogDebug("Объект: {id}", id); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryDelete = @" + DELETE FROM Car + WHERE Car_ID=@id"; + connection.Execute(queryDelete, new { id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при удалении объекта"); + throw; + } } public Car ReadCarByID(int id) { - return Car.CreateEntity(0, string.Empty, string.Empty, 0, 0, 0); + _logger.LogInformation("Получение объекта по идентификатору"); + _logger.LogDebug("Объект: {id}", id); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = @" + SELECT * FROM Car + WHERE Car_ID=@id"; + var car = connection.QueryFirst(querySelect, new { id }); + _logger.LogDebug("Найденный объект: {json}", JsonConvert.SerializeObject(car)); + return car; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при поиске объекта"); + throw; + } } public IEnumerable ReadCars() { - return []; + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = "SELECT * FROM Car"; + var cars = connection.Query(querySelect); + _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(cars)); + return cars; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } } public void UpdateCar(Car car) { + _logger.LogInformation("Редактирование объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(car)); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryUpdate = @" + UPDATE Car + SET + Car_Mark=@Car_Mark, + Car_Model=@Car_Model, + Car_Type=@Car_Type, + License=@License, + Consumption_Rate=@Consumption_Rate + WHERE Car_ID=@Car_ID"; + connection.Execute(queryUpdate, car); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при редактировании объекта"); + throw; + } } }