using BeautySalonDBModels.Models; using Npgsql; namespace BeautySalonDBModels.Implements { public class ClientDatabase : AbstractWorkWithStorage { 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 GetObjects() { var clients = new List(); 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(); } } }