mirror of
				https://gitlab.com/Deukhoofd/DeukBot4.git
				synced 2025-11-03 20:30:04 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			51 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System.Threading.Tasks;
 | 
						|
using DeukBot4.MessageHandlers.Permissions;
 | 
						|
using DeukBot4.Utilities;
 | 
						|
using Npgsql;
 | 
						|
 | 
						|
namespace DeukBot4.Database
 | 
						|
{
 | 
						|
    public static class DatabaseRolePermissions
 | 
						|
    {
 | 
						|
        public static async Task SetRolePermission(ulong serverId, ulong roleId, PermissionLevel permissionLevel)
 | 
						|
        {
 | 
						|
            using (var conn = new DatabaseConnection())
 | 
						|
            {
 | 
						|
                using (var cmd = new NpgsqlCommand())
 | 
						|
                {
 | 
						|
                    cmd.Connection = conn;
 | 
						|
                    cmd.CommandText = "INSERT INTO permission_roles (server_id, role_id, permission_level)" +
 | 
						|
                                      "VALUES (@server_id, @role_id, @permission_level) " +
 | 
						|
                                      "ON CONFLICT (server_id, role_id) DO UPDATE SET permission_level = @permission_level";
 | 
						|
                    cmd.Parameters.AddWithValue("server_id", serverId.ToLong());
 | 
						|
                    cmd.Parameters.AddWithValue("role_id", roleId.ToLong());
 | 
						|
                    cmd.Parameters.AddWithValue("permission_level", (sbyte)permissionLevel);
 | 
						|
                    await cmd.ExecuteNonQueryAsync();
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        public static async Task<PermissionLevel> GetRolePermission(ulong serverId, ulong roleId)
 | 
						|
        {
 | 
						|
            using (var conn = new DatabaseConnection())
 | 
						|
            {
 | 
						|
                using (var cmd = new NpgsqlCommand())
 | 
						|
                {
 | 
						|
                    cmd.Connection = conn;
 | 
						|
                    cmd.CommandText =
 | 
						|
                        "SELECT permission_level FROM permission_roles WHERE server_id = @server_id AND role_id = @role_id";
 | 
						|
                    cmd.Parameters.AddWithValue("server_id", serverId.ToLong());
 | 
						|
                    cmd.Parameters.AddWithValue("role_id", roleId.ToLong());
 | 
						|
 | 
						|
                    var reader = cmd.ExecuteReader();
 | 
						|
                    while (await reader.ReadAsync())
 | 
						|
                    {
 | 
						|
                        return (PermissionLevel)(sbyte)reader.GetInt16(0);
 | 
						|
                    }
 | 
						|
 | 
						|
                    return (PermissionLevel)sbyte.MinValue;
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |