388 lines
11 KiB
C#
388 lines
11 KiB
C#
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<User> GetUsers()
|
|
{
|
|
List<User> users = new List<User>();
|
|
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<Type> GetTypes()
|
|
{
|
|
List<Type> types = new List<Type>();
|
|
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<Data> GetDatas()
|
|
{
|
|
List<Data> list = new List<Data>();
|
|
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<Invited> GetInvited(int id)
|
|
{
|
|
List<Invited> 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;
|
|
}
|
|
}
|
|
}
|