using Npgsql; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace db_lab { public partial class BuildingRepository : Form { private NpgsqlConnection connection; public BuildingRepository(string connectionString) { this.connection = new NpgsqlConnection(connectionString); } public DataTable ReadBuildings(int pageSize, int pageNumber) { string query = $"SELECT * FROM Building ORDER BY id LIMIT {pageSize} OFFSET {(pageNumber - 1) * pageSize}"; NpgsqlDataAdapter da = new NpgsqlDataAdapter(query, connection); DataTable dt = new DataTable(); da.Fill(dt); return dt; } public void DeleteBuilding(int id) { string query = $"DELETE FROM Building WHERE id = {id}"; using (var cmd = new NpgsqlCommand(query, connection)) { connection.Open(); cmd.ExecuteNonQuery(); connection.Close(); } } public void AddBuilding(int floorCount, string address, int creatingUserId, string buildingType) { string query = "INSERT INTO Building (floor_count, address, creating_user_id, building_type) VALUES (@floor_count, @address, @creating_user_id, @building_type)"; using (var cmd = new NpgsqlCommand(query, connection)) { cmd.Parameters.AddWithValue("floor_count", floorCount); cmd.Parameters.AddWithValue("address", address); cmd.Parameters.AddWithValue("creating_user_id", creatingUserId); cmd.Parameters.AddWithValue("building_type", buildingType); connection.Open(); cmd.ExecuteNonQuery(); connection.Close(); } } public void UpdateBuilding(int id, int floorCount, string address, int creatingUserId, string buildingType) { string query = "UPDATE Building SET floor_count = @floor_count, address = @address, creating_user_id = @creating_user_id, building_type = @building_type WHERE id = @id"; using (var cmd = new NpgsqlCommand(query, connection)) { cmd.Parameters.AddWithValue("floor_count", floorCount); cmd.Parameters.AddWithValue("address", address); cmd.Parameters.AddWithValue("creating_user_id", creatingUserId); cmd.Parameters.AddWithValue("building_type", buildingType); cmd.Parameters.AddWithValue("id", id); connection.Open(); cmd.ExecuteNonQuery(); connection.Close(); } } public DataRow GetBuildingById(int id) { string query = $"SELECT * FROM Building WHERE id = {id}"; NpgsqlDataAdapter da = new NpgsqlDataAdapter(query, connection); DataTable dt = new DataTable(); da.Fill(dt); return dt.Rows.Count > 0 ? dt.Rows[0] : null; } } }