using MySqlConnector; namespace SupportChild.Database; public static class Connection { private static string connectionString = ""; public static void SetConnectionString(string host, int port, string database, string username, string password) { connectionString = "server=" + host + ";database=" + database + ";port=" + port + ";userid=" + username + ";password=" + password; } public static MySqlConnection GetConnection() { return new MySqlConnection(connectionString); } public static void SetupTables() { using MySqlConnection c = GetConnection(); using MySqlCommand createTickets = new MySqlCommand( "CREATE TABLE IF NOT EXISTS tickets(" + "id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT," + "created_time DATETIME NOT NULL," + "creator_id BIGINT UNSIGNED NOT NULL," + "assigned_staff_id BIGINT UNSIGNED NOT NULL DEFAULT 0," + "summary VARCHAR(5000) NOT NULL," + "channel_id BIGINT UNSIGNED NOT NULL UNIQUE," + "INDEX(created_time, assigned_staff_id, channel_id))", c); using MySqlCommand createTicketHistory = new MySqlCommand( "CREATE TABLE IF NOT EXISTS ticket_history(" + "id INT UNSIGNED NOT NULL PRIMARY KEY," + "created_time DATETIME NOT NULL," + "closed_time DATETIME NOT NULL," + "creator_id BIGINT UNSIGNED NOT NULL," + "assigned_staff_id BIGINT UNSIGNED NOT NULL DEFAULT 0," + "summary VARCHAR(5000) NOT NULL," + "channel_id BIGINT UNSIGNED NOT NULL UNIQUE," + "INDEX(created_time, closed_time, channel_id))", c); using MySqlCommand createBlacklisted = new MySqlCommand( "CREATE TABLE IF NOT EXISTS blacklisted_users(" + "user_id BIGINT UNSIGNED NOT NULL PRIMARY KEY," + "time DATETIME NOT NULL," + "moderator_id BIGINT UNSIGNED NOT NULL," + "INDEX(user_id, time))", c); using MySqlCommand createStaffList = new MySqlCommand( "CREATE TABLE IF NOT EXISTS staff(" + "user_id BIGINT UNSIGNED NOT NULL PRIMARY KEY," + "name VARCHAR(256) NOT NULL," + "active BOOLEAN NOT NULL DEFAULT true)", c); using MySqlCommand createMessages = new MySqlCommand( "CREATE TABLE IF NOT EXISTS messages(" + "identifier VARCHAR(256) NOT NULL PRIMARY KEY," + "user_id BIGINT UNSIGNED NOT NULL," + "message VARCHAR(5000) NOT NULL)", c); using MySqlCommand createCategories = new MySqlCommand( "CREATE TABLE IF NOT EXISTS categories(" + "name VARCHAR(256) NOT NULL UNIQUE," + "category_id BIGINT UNSIGNED NOT NULL PRIMARY KEY)", c); using MySqlCommand createInterviews = new MySqlCommand( "CREATE TABLE IF NOT EXISTS interviews(" + "channel_id BIGINT UNSIGNED NOT NULL PRIMARY KEY," + "interview JSON NOT NULL," + "definitions JSON NOT NULL)", c); using MySqlCommand createInterviewTemplates = new MySqlCommand( "CREATE TABLE IF NOT EXISTS interview_templates(" + "category_id BIGINT UNSIGNED NOT NULL PRIMARY KEY," + "template JSON NOT NULL)", c); c.Open(); createTickets.ExecuteNonQuery(); createBlacklisted.ExecuteNonQuery(); createTicketHistory.ExecuteNonQuery(); createStaffList.ExecuteNonQuery(); createMessages.ExecuteNonQuery(); createCategories.ExecuteNonQuery(); createInterviews.ExecuteNonQuery(); createInterviewTemplates.ExecuteNonQuery(); } }