80 lines
2.9 KiB
C#

using BeautySalonDBModels.Models;
using Npgsql;
namespace BeautySalonDBModels.Implements
{
public class SpecialisationDatabase : AbstractWorkWithStorage<Specialisation>
{
public override void Add(Specialisation specialisation)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("INSERT INTO specialisations (specialisation_id, specialisation_name) VALUES (nextval('seq_specialisation'), @Name)", conn);
cmd.Parameters.AddWithValue("@Name", specialisation.Name);
cmd.ExecuteNonQuery();
}
public override Specialisation? GetObject(int id)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("SELECT * FROM specialisations WHERE specialisation_id = @id", conn);
cmd.Parameters.AddWithValue("@id", id);
using var reader = cmd.ExecuteReader();
if (reader.Read())
{
return new Specialisation
{
SpecialisationId = reader.GetInt32(0),
Name = reader.GetString(1)
};
}
return null;
}
public override List<Specialisation> GetObjects()
{
var specialisations = new List<Specialisation>();
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("SELECT * FROM specialisations order by specialisation_id", conn);
using var reader = cmd.ExecuteReader();
while (reader.Read())
{
specialisations.Add(new Specialisation
{
SpecialisationId = reader.GetInt32(0),
Name = reader.GetString(1)
});
}
return specialisations;
}
public override Specialisation? Remove(int id)
{
var specialisation = GetObject(id);
if (specialisation != null)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("delete from specialisations where specialisation_id = @SpecialisationId", conn);
cmd.Parameters.AddWithValue("@SpecialisationId", id);
cmd.ExecuteNonQuery();
}
return specialisation;
}
public override void Update(Specialisation specialisation)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("UPDATE specialisations SET specialisation_name = @Name WHERE specialisation_id = @SpecialisationId", conn);
cmd.Parameters.AddWithValue("@Name", specialisation.Name);
cmd.Parameters.AddWithValue("@SpecialisationId", specialisation.SpecialisationId);
cmd.ExecuteNonQuery();
}
}
}