53 lines
2.0 KiB
C#
53 lines
2.0 KiB
C#
using MedicalDatabaseContracts.Models;
|
|
using Microsoft.Extensions.Logging;
|
|
using Npgsql;
|
|
using System.Diagnostics;
|
|
|
|
namespace MedicalPostgresqlDatabase.Storages
|
|
{
|
|
public class DiagnosesStorage : AbstractPostgresqlStorage<Diagnose>
|
|
{
|
|
private ILogger _logger;
|
|
public DiagnosesStorage(ILogger<DiagnosesStorage> logger) : base("diagnoses", "diagnose_id")
|
|
{
|
|
_logger = logger;
|
|
}
|
|
|
|
protected override Diagnose CreateEntityFromReader(NpgsqlDataReader reader)
|
|
{
|
|
return new Diagnose
|
|
{
|
|
Id = Convert.ToInt32(reader.GetOrdinal(PRIMARY_KEY_COLUMN_NAME)),
|
|
Name = Convert.ToString(reader.GetOrdinal("name")),
|
|
};
|
|
}
|
|
|
|
public override void Insert(Diagnose item, out long elapsedMilliseconds)
|
|
{
|
|
using var connection = GetConnection();
|
|
connection.Open();
|
|
using var cmd = new NpgsqlCommand($"INSERT INTO diagnoses ({PRIMARY_KEY_COLUMN_NAME}, 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 {PRIMARY_KEY_COLUMN_NAME} = @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;
|
|
}
|
|
}
|
|
}
|