75 lines
2.4 KiB
C#
Raw Normal View History

using BeautySalonDBModels.Models;
using Npgsql;
namespace BeautySalonDBModels.Implements
{
public class ClientDB : AbstractWorkWithStorage<Client>
{
public override void Add(Client client)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("INSERT INTO clients (fio, age) VALUES (@FIO, @Age)", conn);
cmd.Parameters.AddWithValue("@FIO", client.FIO);
cmd.Parameters.AddWithValue("@Age", client.Age);
cmd.ExecuteNonQuery();
}
public override Client? GetObject(int id)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("SELECT * FROM clients WHERE client_id = {id}", conn);
using var reader = cmd.ExecuteReader();
if (reader.Read())
{
return new Client
{
ClientId = reader.GetInt32(0),
FIO = reader.GetString(1),
Age = reader.GetInt32(2)
};
}
return null;
}
public override List<Client> GetObjects()
{
var clients = new List<Client>();
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("SELECT * FROM clients order by client_id", conn);
using var reader = cmd.ExecuteReader();
while (reader.Read())
{
clients.Add(new Client
{
ClientId = reader.GetInt32(0),
FIO = reader.GetString(1),
Age = reader.GetInt32(2)
});
}
return clients;
}
public override Client? Remove(int id)
{
var client = GetObject(id);
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("delete from clients where client_id = {id}", conn);
cmd.ExecuteNonQuery();
return client;
}
public override void Update(Client client)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("update clients set fio = {client.FIO}, " +
"age = {client.Age} where client_id = {client.ClientId}", conn);
cmd.ExecuteNonQuery();
}
}
}