using MedicalDatabaseContracts.Models; using Microsoft.Extensions.Logging; using Npgsql; using System.Diagnostics; namespace MedicalPostgresqlDatabase.Storages { public class DiagnosesStorage : AbstractPostgresqlStorage { private ILogger _logger; public DiagnosesStorage(ILogger logger) : base("diagnoses", "diagnose_id") { _logger = logger; } protected override Diagnose CreateEntityFromReader(NpgsqlDataReader reader) { return new Diagnose { Id = reader.GetInt32(0), Name = reader.GetString(1), }; } public override void Insert(Diagnose item, out long elapsedMilliseconds) { using var connection = GetConnection(); connection.Open(); using var cmd = new NpgsqlCommand("INSERT INTO diagnoses (diagnose_id, name) VALUES ((nextval('diagnoses_id_seq')), @name)", connection); cmd.Parameters.AddWithValue("@name", item.Name); Stopwatch stopwatch = new(); stopwatch.Start(); cmd.ExecuteNonQuery(); stopwatch.Stop(); elapsedMilliseconds = stopwatch.ElapsedMilliseconds; } public override void Update(Diagnose item, out long elapsedMilliseconds) { using var connection = GetConnection(); connection.Open(); using var cmd = new NpgsqlCommand("UPDATE diagnoses SET name = @name WHERE diagnose_id = @id", connection); cmd.Parameters.AddWithValue("@id", item.Id); cmd.Parameters.AddWithValue("@name", item.Name); Stopwatch stopwatch = new(); stopwatch.Start(); cmd.ExecuteNonQuery(); stopwatch.Stop(); elapsedMilliseconds = stopwatch.ElapsedMilliseconds; } } }