From 465644507720703a866e7112b61daf4cdd0ba929 Mon Sep 17 00:00:00 2001 From: mara-1 <147929076+mara-1@users.noreply.github.com> Date: Thu, 12 Dec 2024 03:21:18 +0400 Subject: [PATCH] LabWork02 --- .../Entities/Enums/JockeyTitle.cs | 8 +- .../Forms/FormRace.Designer.cs | 2 + .../Forms/FormRaceEntries.cs | 2 +- ProjectHorseRacingOrg/Program.cs | 35 ++++- .../ProjectHorseRacingOrg.csproj | 13 ++ .../Repositories/IConnectionString.cs | 13 ++ .../Implementations/ConnectionString.cs | 12 ++ .../Implementations/HorseRepository.cs | 126 ++++++++++++++- .../Implementations/JockeyRepository.cs | 124 +++++++++++++-- .../Implementations/RaceEntriesRepository.cs | 89 ++++++++++- .../Implementations/RaceRepository.cs | 145 +++++++++++++++--- .../Implementations/RacingHorsesRepository.cs | 52 ++++++- ProjectHorseRacingOrg/appsettings.json | 15 ++ 13 files changed, 579 insertions(+), 57 deletions(-) create mode 100644 ProjectHorseRacingOrg/Repositories/IConnectionString.cs create mode 100644 ProjectHorseRacingOrg/Repositories/Implementations/ConnectionString.cs create mode 100644 ProjectHorseRacingOrg/appsettings.json diff --git a/ProjectHorseRacingOrg/Entities/Enums/JockeyTitle.cs b/ProjectHorseRacingOrg/Entities/Enums/JockeyTitle.cs index 2c5c095..d55c1d7 100644 --- a/ProjectHorseRacingOrg/Entities/Enums/JockeyTitle.cs +++ b/ProjectHorseRacingOrg/Entities/Enums/JockeyTitle.cs @@ -10,9 +10,9 @@ public enum JockeyTitle { None = 0, - SecondCategory = 1, - - FirstCategory = 2, - + FirstCategory = 1, + + SecondCategory = 2, + Master = 3 } diff --git a/ProjectHorseRacingOrg/Forms/FormRace.Designer.cs b/ProjectHorseRacingOrg/Forms/FormRace.Designer.cs index 79b9e8b..80b263d 100644 --- a/ProjectHorseRacingOrg/Forms/FormRace.Designer.cs +++ b/ProjectHorseRacingOrg/Forms/FormRace.Designer.cs @@ -81,6 +81,7 @@ buttonSave.TabIndex = 4; buttonSave.Text = "Сохранить"; buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; // // buttonCancel // @@ -90,6 +91,7 @@ buttonCancel.TabIndex = 5; buttonCancel.Text = "Отмена"; buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; // // textBoxName // diff --git a/ProjectHorseRacingOrg/Forms/FormRaceEntries.cs b/ProjectHorseRacingOrg/Forms/FormRaceEntries.cs index 1e01e68..b10b058 100644 --- a/ProjectHorseRacingOrg/Forms/FormRaceEntries.cs +++ b/ProjectHorseRacingOrg/Forms/FormRaceEntries.cs @@ -61,7 +61,7 @@ namespace ProjectHorseRacingOrg.Forms var list = new List(); foreach (DataGridViewRow row in dataGridView.Rows) { - if (row.Cells["ColumnFeed"].Value == null || + if (row.Cells["ColumnRace"].Value == null || row.Cells["ColumnCount"].Value == null) { continue; diff --git a/ProjectHorseRacingOrg/Program.cs b/ProjectHorseRacingOrg/Program.cs index 7ef4c45..2ee7bf8 100644 --- a/ProjectHorseRacingOrg/Program.cs +++ b/ProjectHorseRacingOrg/Program.cs @@ -2,6 +2,10 @@ using Unity.Lifetime; using Unity; using ProjectHorseRacingOrg.Repositories; using ProjectHorseRacingOrg.Repositories.Implementations; +using Unity.Microsoft.Logging; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Logging; +using Serilog; namespace ProjectHorseRacingOrg { @@ -22,17 +26,32 @@ namespace ProjectHorseRacingOrg private static IUnityContainer CreateContainer() { var container = new UnityContainer(); - container.RegisterType(new TransientLifetimeManager()); - container.RegisterType(new TransientLifetimeManager()); + + container.AddExtension(new LoggingExtension(CreateLoggerFactory())); + + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); container.RegisterType(new TransientLifetimeManager()); - container.RegisterType(new TransientLifetimeManager()); - container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + + container.RegisterType(); + return container; } + private static LoggerFactory CreateLoggerFactory() + { + var loggerFactory = new LoggerFactory(); + loggerFactory.AddSerilog(new LoggerConfiguration() + .ReadFrom.Configuration(new ConfigurationBuilder() + .SetBasePath(Directory.GetCurrentDirectory()) + .AddJsonFile("appsettings.json") + .Build()) + .CreateLogger()); + return loggerFactory; + } + + } } \ No newline at end of file diff --git a/ProjectHorseRacingOrg/ProjectHorseRacingOrg.csproj b/ProjectHorseRacingOrg/ProjectHorseRacingOrg.csproj index accbdf0..9f5aed5 100644 --- a/ProjectHorseRacingOrg/ProjectHorseRacingOrg.csproj +++ b/ProjectHorseRacingOrg/ProjectHorseRacingOrg.csproj @@ -9,7 +9,20 @@ + + + + + + + + + + + + + diff --git a/ProjectHorseRacingOrg/Repositories/IConnectionString.cs b/ProjectHorseRacingOrg/Repositories/IConnectionString.cs new file mode 100644 index 0000000..1b753a6 --- /dev/null +++ b/ProjectHorseRacingOrg/Repositories/IConnectionString.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectHorseRacingOrg.Repositories; + +public interface IConnectionString +{ + string ConnectionString { get; } + +} diff --git a/ProjectHorseRacingOrg/Repositories/Implementations/ConnectionString.cs b/ProjectHorseRacingOrg/Repositories/Implementations/ConnectionString.cs new file mode 100644 index 0000000..987d149 --- /dev/null +++ b/ProjectHorseRacingOrg/Repositories/Implementations/ConnectionString.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectHorseRacingOrg.Repositories.Implementations; + +internal class ConnectionString : IConnectionString +{ + string IConnectionString.ConnectionString => "Server=localhost, 5432;Database=racinghorse;Uid=postgres;Pwd=postgres;"; +} diff --git a/ProjectHorseRacingOrg/Repositories/Implementations/HorseRepository.cs b/ProjectHorseRacingOrg/Repositories/Implementations/HorseRepository.cs index e232404..7065e22 100644 --- a/ProjectHorseRacingOrg/Repositories/Implementations/HorseRepository.cs +++ b/ProjectHorseRacingOrg/Repositories/Implementations/HorseRepository.cs @@ -1,36 +1,146 @@ -using ProjectHorseRacingOrg.Entities; +using Dapper; +using Microsoft.Extensions.Logging; +using Microsoft.VisualBasic.Devices; +using Newtonsoft.Json; +using ProjectHorseRacingOrg.Entities; +using Serilog.Core; using System; using System.Collections.Generic; +using Microsoft.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; +using Npgsql; namespace ProjectHorseRacingOrg.Repositories.Implementations; public class HorseRepository : IHorseRepository + { + private readonly IConnectionString _connectionString; + + private readonly ILogger _logger; + + public HorseRepository(IConnectionString connectionString, ILogger logger) + { + _connectionString = connectionString; + _logger = logger; + + } public void CreateHorse(Horse horse) { + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(horse)); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryInsert = @" +INSERT INTO Horses (HorseSpecies, HorseNickName, Age, Weight) +VALUES (@HorseSpecies, @HorseNickName, @Age, @Weight)"; + connection.Execute(queryInsert, horse); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } + + } + public void UpdateHorse(Horse horse) + { + _logger.LogInformation("Редактирование объекта"); + + _logger.LogDebug("Объект: {json}", + JsonConvert.SerializeObject(horse)); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var queryUpdate = @" +UPDATE Horses +SET +HorseSpecies=@HorseSpecies, +HorseNickName=@HorseNickName, +Age=@Age, +Weight=@Weight +WHERE Id=@Id"; + connection.Execute(queryUpdate, horse); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при редактировании объекта"); + throw; + } } public void DeleteHorse(int id) { - + _logger.LogInformation("Удаление объекта"); + _logger.LogDebug("Объект: {id}", id); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var queryDelete = @" +DELETE FROM Horses +WHERE Id=@id"; + connection.Execute(queryDelete, new { id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при удалении объекта"); + throw; + } } public Horse ReadHorseById(int id) { - return Horse.CreateEntity(0, string.Empty, string.Empty, 0, 0); + _logger.LogInformation("Получение объекта по идентификатору"); + _logger.LogDebug("Объект: {id}", id); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = @" +SELECT * FROM Horses +WHERE Id=@id"; + var horse = connection.QueryFirst(querySelect, new + { + id + }); + _logger.LogDebug("Найденный объект: {json}", + JsonConvert.SerializeObject(horse)); + return horse; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при поиске объекта"); + throw; + } + } public IEnumerable ReadHorses() { - return []; - } - - public void UpdateHorse(Horse horse) - { + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = "SELECT * FROM Horses"; + var horses = connection.Query(querySelect); + _logger.LogDebug("Полученные объекты: {json}", + JsonConvert.SerializeObject(horses)); + return horses; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } } + + } diff --git a/ProjectHorseRacingOrg/Repositories/Implementations/JockeyRepository.cs b/ProjectHorseRacingOrg/Repositories/Implementations/JockeyRepository.cs index a92e007..dc4efd3 100644 --- a/ProjectHorseRacingOrg/Repositories/Implementations/JockeyRepository.cs +++ b/ProjectHorseRacingOrg/Repositories/Implementations/JockeyRepository.cs @@ -1,4 +1,8 @@ -using ProjectHorseRacingOrg.Entities; +using Dapper; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using ProjectHorseRacingOrg.Entities; using ProjectHorseRacingOrg.Entities.Enums; using System; using System.Collections.Generic; @@ -10,29 +14,129 @@ namespace ProjectHorseRacingOrg.Repositories.Implementations; public class JockeyRepository : IJockeyRepository { - public void CreateJockey(Jockey jockey) - { + private readonly IConnectionString _connectionString; + private readonly ILogger _logger; + + public JockeyRepository(IConnectionString connectionString, ILogger logger) + { + _connectionString = connectionString; + _logger = logger; } + public void CreateJockey(Jockey jockey) + { + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", + JsonConvert.SerializeObject(jockey)); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var queryInsert = @" +INSERT INTO Jockeys (FirstName, LastName, JockeyTitle) +VALUES (@FirstName, @LastName, @JockeyTitle)"; + connection.Execute(queryInsert, jockey); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } + + } + public void UpdateJockey(Jockey jockey) + { + _logger.LogInformation("Редактирование объекта"); + _logger.LogDebug("Объект: {json}", + + JsonConvert.SerializeObject(jockey)); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var queryUpdate = @" +UPDATE Jockeys +SET +FirstName=@FirstName, +LastName=@LastName, +JockeyTitle=@JockeyTitle +WHERE Id=@Id"; + connection.Execute(queryUpdate, jockey); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при редактировании объекта"); + throw; + } + + } public void DeleteJockey(int id) { - + _logger.LogInformation("Удаление объекта"); + _logger.LogDebug("Объект: {id}", id); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var queryDelete = @" +DELETE FROM Jockeys +WHERE Id=@id"; + connection.Execute(queryDelete, new { id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при удалении объекта"); + throw; + } + } public Jockey ReadJockeyById(int id) { - return Jockey.CreateEntity(0, string.Empty, string.Empty, JockeyTitle.None); + _logger.LogInformation("Получение объекта по идентификатору"); + _logger.LogDebug("Объект: {id}", id); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = @" +SELECT * FROM Jockeys +WHERE Id=@id"; + var jockey = connection.QueryFirst(querySelect, + new { id }); + _logger.LogDebug("Найденный объект: {json}", + JsonConvert.SerializeObject(jockey)); + return jockey; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при поиске объекта"); + throw; + } + } public IEnumerable ReadJockeys() { - return []; + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = "SELECT * FROM Jockeys"; + var jockeys = connection.Query(querySelect); + _logger.LogDebug("Полученные объекты: {json}", + JsonConvert.SerializeObject(jockeys)); + return jockeys; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } } - public void UpdateJockey(Jockey jockey) - { - - } + } diff --git a/ProjectHorseRacingOrg/Repositories/Implementations/RaceEntriesRepository.cs b/ProjectHorseRacingOrg/Repositories/Implementations/RaceEntriesRepository.cs index e8ae20e..1e3c92d 100644 --- a/ProjectHorseRacingOrg/Repositories/Implementations/RaceEntriesRepository.cs +++ b/ProjectHorseRacingOrg/Repositories/Implementations/RaceEntriesRepository.cs @@ -1,4 +1,9 @@ -using ProjectHorseRacingOrg.Entities; +using Dapper; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using ProjectHorseRacingOrg.Entities; +using Serilog.Core; using System; using System.Collections.Generic; using System.Linq; @@ -9,18 +14,94 @@ namespace ProjectHorseRacingOrg.Repositories.Implementations; public class RaceEntriesRepository : IRaceEntriesRepository { + private readonly IConnectionString _connectionString; + private readonly ILogger _logger; + public RaceEntriesRepository(IConnectionString connectionString, + ILogger logger) + { + _connectionString = connectionString; + _logger = logger; + } + + public void CreateRaceEntries(RaceEntries raceEntries) { - + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", + JsonConvert.SerializeObject(raceEntries)); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + connection.Open(); + using var transaction = connection.BeginTransaction(); + var queryInsert = @" +INSERT INTO RaceEntries (JockeyId, DateReceipt) +VALUES (@JockeyId, @DateReceipt); +SELECT MAX(Id) FROM RaceEntries"; + var raceEntryId = + connection.QueryFirst(queryInsert, raceEntries, transaction); + var querySubInsert = @" +INSERT INTO RaceEntryDetails (RaceEntryId, RaceId, Count) +VALUES (@RaceEntryId,@RaceId, @Count)"; + foreach (var elem in raceEntries.RaceEntryDetails) + { + connection.Execute(querySubInsert, new + { + raceEntryId, + elem.RaceId, + elem.Count + }, transaction); + } + transaction.Commit(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } + } public void DeleteRaceEntries(int id) { - + _logger.LogInformation("Удаление объекта"); + _logger.LogDebug("Объект: {id}", id); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var queryDelete = @" +DELETE FROM RaceEntries +WHERE Id=@id"; + connection.Execute(queryDelete, new { id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при удалении объекта"); + throw; + } } public IEnumerable ReadRaceEntries(DateTime? dateForm = null, DateTime? dateTo = null, int? raceId = null, int? jockeyId = null) { - return []; + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = "SELECT * FROM RaceEntries"; + var raceEntries = + connection.Query(querySelect); + _logger.LogDebug("Полученные объекты: {json}", + JsonConvert.SerializeObject(raceEntries)); + return raceEntries; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } + } } diff --git a/ProjectHorseRacingOrg/Repositories/Implementations/RaceRepository.cs b/ProjectHorseRacingOrg/Repositories/Implementations/RaceRepository.cs index ec4498a..c842c28 100644 --- a/ProjectHorseRacingOrg/Repositories/Implementations/RaceRepository.cs +++ b/ProjectHorseRacingOrg/Repositories/Implementations/RaceRepository.cs @@ -1,8 +1,14 @@ -using Microsoft.VisualBasic.FileIO; +using Dapper; +using Microsoft.Extensions.Logging; +using Microsoft.VisualBasic.FileIO; +using Newtonsoft.Json; +using Npgsql; using ProjectHorseRacingOrg.Entities; using ProjectHorseRacingOrg.Entities.Enums; +using Serilog.Core; using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -11,30 +17,131 @@ namespace ProjectHorseRacingOrg.Repositories.Implementations; public class RaceRepository : IRaceRepository { + private readonly IConnectionString _connectionString; + private readonly ILogger _logger; + + public RaceRepository(IConnectionString connectionString, + ILogger logger) + { + _connectionString = connectionString; + _logger = logger; + } + + public void CreateRace(Race race) { - - } - - public void DeleteRace(int id) - { - - } - - public Race ReadRaceById(int id) - { - return Race.CreateEntity(0, RaceType.None, string.Empty, string.Empty); - - } - - public IEnumerable ReadRaces() - { - return []; + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", + JsonConvert.SerializeObject(race)); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var queryInsert = @" +INSERT INTO Races (RaceType, Name, Description) +VALUES (@RaceType, @Name, @Description)"; + connection.Execute(queryInsert, race); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } } public void UpdateRace(Race race) { - + _logger.LogInformation("Редактирование объекта"); + _logger.LogDebug("Объект: {json}", + JsonConvert.SerializeObject(race)); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var queryUpdate = @" +UPDATE Races +SET +RaceType=@RaceType, +Name=@Name, +Description=@Description +WHERE Id=@Id"; + connection.Execute(queryUpdate, race); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при редактировании объекта"); + throw; + } } + + public void DeleteRace(int id) + { + _logger.LogInformation("Удаление объекта"); + _logger.LogDebug("Объект: {id}", id); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var queryDelete = @" +DELETE FROM Races +WHERE Id=@id"; + connection.Execute(queryDelete, new { id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при удалении объекта"); + throw; + } + } + + public Race ReadRaceById(int id) + { + _logger.LogInformation("Получение объекта по идентификатору"); + _logger.LogDebug("Объект: {id}", id); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = @" +SELECT * FROM Races +WHERE Id=@id"; + var race = connection.QueryFirst(querySelect, new + { + id + }); + _logger.LogDebug("Найденный объект: {json}", + JsonConvert.SerializeObject(race)); + return race; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при поиске объекта"); + throw; + } + + + } + + public IEnumerable ReadRaces() + { + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = "SELECT * FROM Races"; + var races = connection.Query(querySelect); + _logger.LogDebug("Полученные объекты: {json}", + JsonConvert.SerializeObject(races)); + return races; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } + } + + } diff --git a/ProjectHorseRacingOrg/Repositories/Implementations/RacingHorsesRepository.cs b/ProjectHorseRacingOrg/Repositories/Implementations/RacingHorsesRepository.cs index 2b4f1ec..e4b0d0b 100644 --- a/ProjectHorseRacingOrg/Repositories/Implementations/RacingHorsesRepository.cs +++ b/ProjectHorseRacingOrg/Repositories/Implementations/RacingHorsesRepository.cs @@ -1,4 +1,8 @@ -using ProjectHorseRacingOrg.Entities; +using Dapper; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using ProjectHorseRacingOrg.Entities; using System; using System.Collections.Generic; using System.Linq; @@ -9,13 +13,55 @@ namespace ProjectHorseRacingOrg.Repositories.Implementations; public class RacingHorsesRepository : IRacingHorsesRepository { + private readonly IConnectionString _connectionString; + private readonly ILogger _logger; + public RacingHorsesRepository(IConnectionString connectionString, + ILogger logger) + { + _connectionString = connectionString; + _logger = logger; + } public void CreateRacingHorse(RacingHorses racingHorses) { - + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", + JsonConvert.SerializeObject(racingHorses)); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var queryInsert = @" +INSERT INTO RacingHorses (RaceId, JockeyId, HorseId, RacingDate, Result) +VALUES (@RaceId, @JockeyId, @HorseId, @RacingDate, @Result)"; + connection.Execute(queryInsert, racingHorses); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } + } public IEnumerable ReadRacingHorses(DateTime? dateForm = null, DateTime? dateTo = null, int? raceId = null, int? jockeyId = null, int? horseId = null) { - return []; + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new + NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = "SELECT * FROM RacingHorses"; + var racingHorses = + connection.Query(querySelect); + _logger.LogDebug("Полученные объекты: {json}", + JsonConvert.SerializeObject(racingHorses)); + return racingHorses; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } + } } diff --git a/ProjectHorseRacingOrg/appsettings.json b/ProjectHorseRacingOrg/appsettings.json new file mode 100644 index 0000000..6a66d3d --- /dev/null +++ b/ProjectHorseRacingOrg/appsettings.json @@ -0,0 +1,15 @@ +{ + "Serilog": { + "Using": [ "Serilog.Sinks.File" ], + "MinimumLevel": "Debug", + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "Logs/HorseRacing_log.txt", + "rollingInterval": "Day" + } + } + ] + } +}