All checks were successful
toastie-stuff/SupportChild/pipeline/head This commit looks good
108 lines
No EOL
3.3 KiB
C#
108 lines
No EOL
3.3 KiB
C#
using System.Collections.Generic;
|
|
using MySqlConnector;
|
|
|
|
namespace SupportChild.Database;
|
|
|
|
public class Category(MySqlDataReader reader)
|
|
{
|
|
public readonly string name = reader.GetString("name");
|
|
public readonly ulong id = reader.GetUInt64("category_id");
|
|
|
|
public static List<Category> GetAllCategories()
|
|
{
|
|
using MySqlConnection c = Connection.GetConnection();
|
|
c.Open();
|
|
using MySqlCommand selection = new MySqlCommand(@"SELECT * FROM categories", c);
|
|
selection.Prepare();
|
|
MySqlDataReader results = selection.ExecuteReader();
|
|
|
|
if (!results.Read())
|
|
{
|
|
return [];
|
|
}
|
|
|
|
List<Category> categories = [new(results)];
|
|
while (results.Read())
|
|
{
|
|
categories.Add(new Category(results));
|
|
}
|
|
results.Close();
|
|
|
|
return categories;
|
|
}
|
|
|
|
public static bool TryGetCategory(ulong categoryID, out Category message)
|
|
{
|
|
using MySqlConnection c = Connection.GetConnection();
|
|
c.Open();
|
|
using MySqlCommand selection = new MySqlCommand(@"SELECT * FROM categories WHERE category_id=@category_id", c);
|
|
selection.Parameters.AddWithValue("@category_id", categoryID);
|
|
selection.Prepare();
|
|
MySqlDataReader results = selection.ExecuteReader();
|
|
|
|
if (!results.Read())
|
|
{
|
|
message = null;
|
|
return false;
|
|
}
|
|
message = new Category(results);
|
|
results.Close();
|
|
return true;
|
|
}
|
|
|
|
public static bool TryGetCategory(string name, out Category message)
|
|
{
|
|
using MySqlConnection c = Connection.GetConnection();
|
|
c.Open();
|
|
using MySqlCommand selection = new MySqlCommand(@"SELECT * FROM categories WHERE name=@name", c);
|
|
selection.Parameters.AddWithValue("@name", name);
|
|
selection.Prepare();
|
|
MySqlDataReader results = selection.ExecuteReader();
|
|
|
|
if (!results.Read())
|
|
{
|
|
message = null;
|
|
return false;
|
|
}
|
|
message = new Category(results);
|
|
results.Close();
|
|
return true;
|
|
}
|
|
|
|
public static bool AddCategory(string name, ulong categoryID)
|
|
{
|
|
try
|
|
{
|
|
using MySqlConnection c = Connection.GetConnection();
|
|
c.Open();
|
|
using MySqlCommand cmd = new MySqlCommand(@"INSERT INTO categories (name,category_id) VALUES (@name, @category_id);", c);
|
|
cmd.Parameters.AddWithValue("@name", name);
|
|
cmd.Parameters.AddWithValue("@category_id", categoryID);
|
|
cmd.Prepare();
|
|
return cmd.ExecuteNonQuery() > 0;
|
|
}
|
|
catch (MySqlException e)
|
|
{
|
|
Logger.Error("Could not add category to database.", e);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static bool RemoveCategory(ulong categoryID)
|
|
{
|
|
try
|
|
{
|
|
using MySqlConnection c = Connection.GetConnection();
|
|
c.Open();
|
|
using MySqlCommand cmd = new MySqlCommand(@"DELETE FROM categories WHERE category_id=@category_id", c);
|
|
cmd.Parameters.AddWithValue("@category_id", categoryID);
|
|
cmd.Prepare();
|
|
return cmd.ExecuteNonQuery() > 0;
|
|
}
|
|
catch (MySqlException e)
|
|
{
|
|
Logger.Error("Could not remove category from database.", e);
|
|
return false;
|
|
}
|
|
}
|
|
} |