46 lines
1.8 KiB
C#

using MedicalDatabaseContracts.Models;
using Microsoft.Extensions.Logging;
using Npgsql;
using System.Data;
namespace MedicalPostgresqlDatabase.Storages
{
public class PatientStorage : AbstractPostgresqlStorage<Patient>
{
public PatientStorage(ILogger<PatientStorage> logger) : base(logger, "patients", "patient_id", "patients_id_seq") { }
protected override Patient CreateEntityFromReader(NpgsqlDataReader reader)
{
return new Patient
{
Id = Convert.ToInt32(reader.GetValue(PRIMARY_KEY_COLUMN_NAME)),
Name = Convert.ToString(reader.GetValue("name")),
Surname = Convert.ToString(reader.GetValue("surname")),
Patronymic = Convert.ToString(reader.GetValue("patronymic")),
PhoneNumber = Convert.ToString(reader.GetValue("phone_number")),
Gender = Convert.ToString(reader.GetValue("gender")),
Birthday = Convert.ToDateTime(reader.GetValue("birthday")),
Weight = Convert.ToInt32(reader.GetValue("weight")),
Height = Convert.ToInt32(reader.GetValue("height")),
};
}
protected override Dictionary<string, object> GetEntityAttributesDictionary(Patient item)
{
var dict = new Dictionary<string, object>
{
{ PRIMARY_KEY_COLUMN_NAME, item.Id },
{ "name", item.Name },
{ "surname", item.Surname },
{ "patronymic", item.Patronymic ?? string.Empty },
{ "phone_number", item.PhoneNumber },
{ "gender", item.Gender },
{ "birthday", item.Birthday },
{ "weight", item.Weight },
{ "height", item.Height },
};
return dict;
}
}
}