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.101;Username=postgres;Password=postgres;Database=calendar"); } public override bool 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(); return true; } public override bool UpdateUser(User user) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"UPDATE users SET name = @Name, email = @Email, birthday = @Birthday WHERE id = @Id", conn); cmd.Parameters.AddWithValue("@Name", user.name); cmd.Parameters.AddWithValue("@Email", user.email); cmd.Parameters.AddWithValue("@Birthday", user.birthday); cmd.Parameters.AddWithValue("@Id", user.Id); cmd.ExecuteNonQuery(); return true; } public override bool DeleteUser(int id) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"DELETE FROM users WHERE id = @Id", conn); cmd.Parameters.AddWithValue("@Id", id); cmd.ExecuteNonQuery(); return true; } 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 User GetUser(string name) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"SELECT * FROM users WHERE name = '{name}'", 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", conn); 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 bool CreateType(Type type) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"INSERT INTO type (title) VALUES ('{type.title}')", conn); cmd.ExecuteNonQuery(); return true; } public override bool DeleteType(int id) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"DELETE FROM type WHERE id = {id}", conn); cmd.ExecuteNonQuery(); return true; } public override bool UpdateType(Type type) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"UPDATE type SET title = '{type.title}' WHERE id = {type.Id}", conn); cmd.ExecuteNonQuery(); return true; } public override Type GetType(int id) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"SELECT * FROM type 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 Type GetType(string title) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"SELECT * FROM type WHERE title = '{title}'", 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 type", 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 bool CreateData(Data data) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"INSERT INTO date (datetime, userid, typeid) VALUES (@Date, @User, @Type)", conn); cmd.Parameters.AddWithValue("@Date", data.dateTime); cmd.Parameters.AddWithValue("@User", data.userId); cmd.Parameters.AddWithValue("@Type", data.typeId); cmd.ExecuteNonQuery(); return true; } public override bool DeleteData(int id) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"DELETE FROM date WHERE id = {id}", conn); cmd.ExecuteNonQuery(); return true; } public override bool UpdateData(Data data) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"UPDATE date SET datetime = @Date, userid = @User, typeid = @Type WHERE id = @Id", conn); cmd.Parameters.AddWithValue("@Date", data.dateTime); cmd.Parameters.AddWithValue("@User", data.userId); cmd.Parameters.AddWithValue("@Type", data.typeId); cmd.Parameters.AddWithValue("@Id", data.Id); cmd.ExecuteNonQuery(); return true; } 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 Data GetData(int UserId, int TypeId) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"SELECT * FROM date WHERE (userId = {UserId} AND typeId = {TypeId})", 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 bool CreateDescription(Description description) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"INSERT INTO description (id, title, description, place) VALUES (@Id, @Title, @Desc, @Place)", conn); cmd.Parameters.AddWithValue("@Title", description.title); cmd.Parameters.AddWithValue("@Desc", description.descript); cmd.Parameters.AddWithValue("@Place", description.place); cmd.Parameters.AddWithValue("@Id", description.Id); cmd.ExecuteNonQuery(); return true; } public override bool UpdateDescription(Description description) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"UPDATE description SET title = @Title, description = @Desc, place = @Place WHERE id = @Id", conn); cmd.Parameters.AddWithValue("@Title", description.title); cmd.Parameters.AddWithValue("@Desc", description.descript); cmd.Parameters.AddWithValue("@Place", description.place); cmd.Parameters.AddWithValue("@Id", description.Id); cmd.ExecuteNonQuery(); return true; } public override bool DeleteDescription(int id) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"DELETE FROM description WHERE id = {id}", conn); cmd.ExecuteNonQuery(); return true; } 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 bool 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(); return true; } public override bool DeleteInvite(int userId, int typeId) { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"DELETE FROM invited WHERE (userid = {userId} AND dateid = {typeId})", conn); cmd.ExecuteNonQuery(); return true; } 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; } public override bool DeleteUsers() { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"DELETE FROM users", conn); cmd.ExecuteNonQuery(); return true; } public override bool DeleteTypes() { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"DELETE FROM type", conn); cmd.ExecuteNonQuery(); return true; } public override bool DeleteDatas() { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"DELETE FROM date", conn); cmd.ExecuteNonQuery(); return true; } public override bool DeleteInvited() { using var conn = GetConnect(); conn.Open(); using var cmd = new NpgsqlCommand($"DELETE FROM invited", conn); cmd.ExecuteNonQuery(); return true; } } }