Initial work on system for server settings

This commit is contained in:
Deukhoofd 2018-03-30 20:10:24 +02:00
parent 349382301e
commit b3c878db04
No known key found for this signature in database
GPG Key ID: B4C087AC81641654
3 changed files with 100 additions and 4 deletions

View File

@ -12,10 +12,16 @@ namespace DeukBot4.Database
{
cmd.Connection = conn;
cmd.CommandText = "CREATE TABLE IF NOT EXISTS permission_roles (" +
"server_id bigint NOT NULL," +
"role_id bigint NOT NULL," +
"permission_level smallint NOT NULL," +
"PRIMARY KEY(server_id, role_id)" +
"server_id bigint NOT NULL," +
"role_id bigint NOT NULL," +
"permission_level smallint NOT NULL," +
"PRIMARY KEY(server_id, role_id)" +
")";
cmd.ExecuteNonQuery();
cmd.CommandText = "CREATE TABLE IF NOT EXISTS server_settings (" +
"server_id bigint NOT NULL," +
"muted_role bigint NOT NULL," +
"PRIMARY KEY(server_id)" +
")";
cmd.ExecuteNonQuery();
}

View File

@ -0,0 +1,32 @@
using DeukBot4.Utilities;
using Npgsql;
namespace DeukBot4.Database.ServerSettings
{
public class ServerSetting
{
public ServerSetting(ulong serverId, ulong mutedRoleId = 0)
{
ServerId = serverId;
MutedRoleId = mutedRoleId;
}
public ulong ServerId { get; }
public ulong MutedRoleId { get; }
public void SetMutedRoleId(ulong id)
{
using (var conn = new DatabaseConnection())
{
using (var cmd = new NpgsqlCommand())
{
cmd.Connection = conn;
cmd.CommandText = "UPDATE server_settings SET muted_role = @val WHERE server_id = @key";
cmd.Parameters.AddWithValue("val", id.ToLong());
cmd.Parameters.AddWithValue("key", ServerId.ToLong());
cmd.ExecuteNonQuery();
}
}
}
}
}

View File

@ -0,0 +1,58 @@
using System.Collections.Generic;
using DeukBot4.Utilities;
using Discord;
using Npgsql;
namespace DeukBot4.Database.ServerSettings
{
public static class ServerSettingHandler
{
private static readonly Dictionary<ulong, ServerSetting> Settings = new Dictionary<ulong, ServerSetting>();
public static void OnBotStartUp()
{
using (var conn = new DatabaseConnection())
{
using (var cmd = new NpgsqlCommand())
{
cmd.Connection = conn;
cmd.CommandText = "SELECT server_id muted_role FROM server_settings";
var reader = cmd.ExecuteReader();
while (reader.Read())
{
var id = reader.GetInt64(0).ToUlong();
var mutedRole = reader.GetInt64(1).ToUlong();
Settings.Add(id, new ServerSetting(id, mutedRole));
}
}
}
}
private static void AddSettingsToDatabase(ServerSetting setting)
{
using (var conn = new DatabaseConnection())
{
using (var cmd = new NpgsqlCommand())
{
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO server_settings (server_id, muted_role) VALUES (@id, @muted)";
cmd.Parameters.AddWithValue("id", setting.ServerId.ToLong());
cmd.Parameters.AddWithValue("muted", setting.MutedRoleId.ToLong());
cmd.ExecuteNonQuery();
}
}
}
public static ServerSetting GetSettings(ulong id)
{
if (Settings.TryGetValue(id, out var setting))
{
return setting;
}
setting = new ServerSetting(id);
Settings.Add(id, setting);
AddSettingsToDatabase(setting);
return setting;
}
}
}