internal static void CompileModule(GrooveModule p_Module)
        {
            if (m_LoadedModules.ContainsKey(p_Module.Name) || !p_Module.Enabled)
                return;

            try
            {
                var s_Scope = m_ScriptEngine.CreateScope();

                s_Scope.ImportModule("clr");

                m_ScriptEngine.Execute("import clr", s_Scope);
                m_ScriptEngine.Execute("from clr import Convert", s_Scope);

                m_ScriptEngine.Execute("clr.AddReference('System.Core')", s_Scope);
                m_ScriptEngine.Execute("from System import Action", s_Scope);
                m_ScriptEngine.Execute("from System.Collections.Generic import List", s_Scope);

                m_ScriptEngine.Execute("clr.AddReference('GS.Lib')", s_Scope);
                m_ScriptEngine.Execute("from GS.Lib import *", s_Scope);

                m_ScriptEngine.Execute("clr.AddReference('GrooveCasterServer')", s_Scope);
                m_ScriptEngine.Execute("from GrooveCaster import *", s_Scope);
                m_ScriptEngine.Execute("from GrooveCaster.Managers import BroadcastManager, ChatManager, QueueManager, SettingsManager, UserManager, SuggestionManager, PlaylistManager", s_Scope);
                m_ScriptEngine.Execute("from GrooveCaster.Application import Library as SharpShark", s_Scope);
                m_ScriptEngine.Execute("from GrooveCaster.Util import ModuleTimer as Timer", s_Scope);

                var s_ScriptSource = m_ScriptEngine.CreateScriptSourceFromString(p_Module.Script.Trim(), SourceCodeKind.File);
                var s_Script = s_ScriptSource.Execute(s_Scope);

                m_LoadedModules.Add(p_Module.Name, new ModuleScript()
                {
                    Source = s_ScriptSource,
                    Script = s_Script,
                    Scope = s_Scope
                });
            }
            catch (Exception s_Exception)
            {
                Console.WriteLine(s_Exception);
                LoadExceptions.Add(p_Module.Name, s_Exception.Message);
            }
        }
 internal static void EnableModule(GrooveModule p_Module)
 {
     p_Module.Enabled = true;
     UpdateModule(p_Module);
 }
 internal static void DisableModule(GrooveModule p_Module)
 {
     p_Module.Enabled = false;
     UpdateModule(p_Module);
 }
 internal static void UpdateModule(GrooveModule p_Module)
 {
     using (var s_Db = Database.GetConnection())
         s_Db.Update(p_Module);
 }
        internal static void RemoveModule(GrooveModule p_Module)
        {
            if (p_Module.Default)
                return;

            using (var s_Db = Database.GetConnection())
                s_Db.Delete(p_Module);
        }