using MedicalDatabaseContracts; using MedicalDatabaseContracts.Models; using Microsoft.Extensions.Logging; using Npgsql; using System.Data; namespace MedicalPostgresqlDatabase.Storages { public class VisitStorage : AbstractPostgresqlStorage { public VisitStorage(ILogger> logger) : base(logger, "visits", "visit_id", "visits_id_seq") { } protected override Visit CreateEntityFromReader(NpgsqlDataReader reader) { return new Visit { Id = Convert.ToInt32(reader.GetValue(PRIMARY_KEY_COLUMN_NAME)), PatientId = Convert.ToInt32(reader.GetValue("patient_id")), DoctorId = Convert.ToInt32(reader.GetValue("doctor_id")), DiagnoseId = Convert.ToInt32(reader.GetValue("diagnose_id")), Comment = Convert.ToString(reader.GetValue("comment")), Date = DateOnly.FromDateTime(Convert.ToDateTime(reader.GetValue("date"))), Time = TimeOnly.FromTimeSpan((TimeSpan)reader.GetValue("time")), }; } protected override Dictionary GetEntityAttributesDictionary(Visit item) { var dict = new Dictionary { { PRIMARY_KEY_COLUMN_NAME, item.Id.ToString() }, { "patient_id", item.PatientId.ToString() }, { "doctor_id", item.DoctorId.ToString() }, { "diagnose_id", item.DiagnoseId.ToString() }, { "comment", item.Comment ?? string.Empty }, { "date", item.Date.ToString() }, { "time", item.Time.ToString() }, }; return dict; } } }