using Npgsql; using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; namespace Database { public class Implements : Abstracts { private NpgsqlConnection GetConnect() { return new NpgsqlConnection("Host=192.168.56.100;Username=postgres;Password=postgres;Database=calendar"); } public override void CreateUser(User user) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand("INSERT INTO users (name, email, birthday) " + "VALUES (@Name, @Email, @Birthday)", conn); cmd.Parameters.AddWithValue("@Name", user.name); cmd.Parameters.AddWithValue("@Email", user.email); cmd.Parameters.AddWithValue("@Birthday", user.birthday); cmd.ExecuteNonQuery(); } public override void UpdateUser(User user) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"UPDATE users SET name = {user.name}, email = {user.email}, birthday = {user.birthday} WHERE id = {user.Id}", conn); cmd.ExecuteNonQuery(); } public override void DeleteUser(int id) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"DELETE FROM users WHERE id = {id}", conn); cmd.ExecuteNonQuery(); } public override User GetUser(int id) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"SELECT * FROM users WHERE id = {id}", conn); using var reader = cmd.ExecuteReader(); if (reader.Read()) { return new User { Id = reader.GetInt32(0), name = reader.GetString(1), email = reader.GetString(2), birthday = reader.GetDateTime(3), }; } return null; } public override List GetUsers() { List users = new List(); using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand("SELECT * FROM users"); using var reader = cmd.ExecuteReader(); while (reader.Read()) { users.Add(new User { Id = reader.GetInt32(0), name = reader.GetString(1), email = reader.GetString(2), birthday = reader.GetDateTime(3), }); } return users; } public override void CreateType(Type type) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"INSERT INTO types (title) VALUES ({type.title})", conn); cmd.ExecuteNonQuery(); } public override void DeleteType(int id) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"DELETE FROM types WHERE id = {id}", conn); cmd.ExecuteNonQuery(); } public override void UpdateType(Type type) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"UPDATE types SET title = {type.title} WHERE id = {type.Id}", conn); cmd.ExecuteNonQuery(); } public override Type GetType(int id) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"SELECT * FROM types WHERE id = {id}", conn); using var reader = cmd.ExecuteReader(); if (reader.Read()) { return new Type { Id = reader.GetInt32(0), title = reader.GetString(1) }; } return null; } public override List GetTypes() { List types = new List(); using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"SELECT * FROM types", conn); using var reader = cmd.ExecuteReader(); while (reader.Read()) { types.Add(new Type { Id = reader.GetInt32(0), title = reader.GetString(1) }); } return types; } public override void CreateData(Data data) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"INSERT INTO date (datetime, userid, typeid) VALUES ({data.dateTime}, {data.userId}, {data.typeId})", conn); cmd.ExecuteNonQuery(); } public override void DeleteData(int id) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"DELETE FROM date WHERE id = {id}", conn); cmd.ExecuteNonQuery(); } public override void UpdateData(Data data) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"UPDATE date SET datetime = {data.dateTime}, userid = {data.userId}, typeid = {data.typeId} WHERE id = {data.Id}", conn); cmd.ExecuteNonQuery(); } public override Data GetData(int id) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"SELECT * FROM date WHERE id = {id}", conn); using var reader = cmd.ExecuteReader(); if (reader.Read()) { return new Data { Id = reader.GetInt32(0), dateTime = reader.GetDateTime(1), userId = reader.GetInt32(2), typeId = reader.GetInt32(3) }; } return null; } public override List GetDatas() { List list = new List(); using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"SELECT * FROM date", conn); using var reader = cmd.ExecuteReader(); while (reader.Read()) { list.Add( new Data { Id = reader.GetInt32(0), dateTime = reader.GetDateTime(1), userId = reader.GetInt32(2), typeId = reader.GetInt32(3) }); } return list; } public override void CreateDescription(Description description) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"INSERT INTO date (id, title, description, place) VALUES ({description.Id}, {description.title}, {description.descript}, {description.place})", conn); cmd.ExecuteNonQuery(); } public override void UpdateDescription(Description description) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"UPDATE date SET title = {description.title}, description = {description.descript}, place = {description.place} WHERE id = {description.Id}", conn); cmd.ExecuteNonQuery(); } public override void DeleteDescription(int id) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"DELETE FROM description WHERE id = {id}", conn); cmd.ExecuteNonQuery(); } public override Description GetDescription(int id) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"SELECT * FROM description WHERE id = {id}", conn); using var reader = cmd.ExecuteReader(); if (reader.Read()) { return new Description { Id = reader.GetInt32(0), title = reader.GetString(1), descript = reader.GetString(2), place = reader.GetString(3) }; } return null; } public override void CreateInvite(Invited invited) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"INSERT INTO invited (userId, dateId) VALUES ({invited.userId}, {invited.typeId})", conn); cmd.ExecuteNonQuery(); } public override void DeleteInvite(int userId, int typeId) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"DELETE FROM invited WHERE userid = {userId}, typeid = {typeId})", conn); cmd.ExecuteNonQuery(); } public override List GetInvited(int id) { List list = new(); using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"SELECT * FROM invited WHERE dateid = {id}", conn); using var reader = cmd.ExecuteReader(); while (reader.Read()) { list.Add(new Invited { userId = reader.GetInt32(0), typeId = reader.GetInt32(1), }); } return list; } } }