80 lines
2.7 KiB
C#
Raw Normal View History

using BeautySalonDBModels.Models;
using Npgsql;
namespace BeautySalonDBModels.Implements
{
public class ClientDatabase : AbstractWorkWithStorage<Client>
{
public override void Add(Client client)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("INSERT INTO clients (client_id, fio, age) VALUES ((nextval('seq_client')), @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);
cmd.Parameters.AddWithValue("@id", id);
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.Parameters.AddWithValue("@id", id);
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 = @FIO, " +
"age = @Age where client_id = @ClientId", conn);
cmd.Parameters.AddWithValue("@FIO", client.FIO);
cmd.Parameters.AddWithValue("@Age", client.Age);
cmd.Parameters.AddWithValue("@ClientId", client.ClientId);
cmd.ExecuteNonQuery();
}
}
}