public ChangelistEvent(SteamChangelist changelist)
            : base("Changelist")
        {
            ChangeNumber = changelist.ChangeNumber;

            if (changelist.Apps.Any())
            {
                Apps = changelist.Apps.ToDictionary(x => x, x => "Unknown App " + x);

                if (Bootstrap.Config.DatabaseConnectionString != null)
                {
                    try
                    {
                        using var db = new MySqlConnection(Bootstrap.Config.DatabaseConnectionString);

                        foreach (var app in db.Query <AppData>("SELECT `AppID`, `Name`, `LastKnownName` FROM `Apps` WHERE `AppID` IN @Apps", new { changelist.Apps }))
                        {
                            if (!string.IsNullOrEmpty(app.LastKnownName) && app.Name != app.LastKnownName)
                            {
                                Apps[app.AppID] = $"{app.Name} ({app.LastKnownName})";
                            }
                            else
                            {
                                Apps[app.AppID] = app.Name;
                            }
                        }
                    }
                    catch (MySqlException e)
                    {
                        Bootstrap.Log("{0}", e.Message);
                    }
                }
            }
            else
            {
                Apps = new Dictionary <uint, string>();
            }

            if (changelist.Packages.Any())
            {
                Packages = changelist.Packages.ToDictionary(x => x, x => "Unknown Package " + x);

                if (Bootstrap.Config.DatabaseConnectionString != null)
                {
                    try
                    {
                        using var db = new MySqlConnection(Bootstrap.Config.DatabaseConnectionString);

                        foreach (var sub in db.Query <PackageData>("SELECT `SubID`, `LastKnownName` FROM `Subs` WHERE `SubID` IN @Packages", new { changelist.Packages }))
                        {
                            Packages[sub.SubID] = sub.LastKnownName;
                        }
                    }
                    catch (MySqlException e)
                    {
                        Bootstrap.Log("{0}", e.Message);
                    }
                }
            }
            else
            {
                Packages = new Dictionary <uint, string>();
            }
        }
        public ChangelistEvent(SteamChangelist changelist)
            : base("Changelist")
        {
            ChangeNumber = changelist.ChangeNumber;

            if (changelist.Apps.Any())
            {
                Apps = changelist.Apps.ToDictionary(x => x, x => "Unknown App " + x);

                if (Bootstrap.DatabaseConnectionString != null)
                {
                    try
                    {
                        var apps = string.Join(",", changelist.Apps);

                        using (var reader = MySqlHelper.ExecuteReader(Bootstrap.DatabaseConnectionString, "SELECT `AppID`, `Name`, `LastKnownName` FROM `Apps` WHERE `AppID` IN(" + apps + ")"))
                        {
                            while (reader.Read())
                            {
                                var name          = reader.GetString(1);
                                var lastKnownName = reader.GetString(2);

                                if (!string.IsNullOrEmpty(lastKnownName) && name != lastKnownName)
                                {
                                    name = string.Format("{0} ({1})", name, lastKnownName);
                                }

                                Apps[reader.GetUInt32(0)] = name;
                            }
                        }
                    }
                    catch (MySqlException e)
                    {
                        Bootstrap.Log("{0}", e.Message);
                    }
                }
            }
            else
            {
                Apps = new Dictionary <uint, string>();
            }

            if (changelist.Packages.Any())
            {
                Packages = changelist.Packages.ToDictionary(x => x, x => "Unknown Package " + x);

                if (Bootstrap.DatabaseConnectionString != null)
                {
                    try
                    {
                        var subs = string.Join(",", changelist.Packages);

                        using (var reader = MySqlHelper.ExecuteReader(Bootstrap.DatabaseConnectionString, "SELECT `SubID`, `LastKnownName` FROM `Subs` WHERE `SubID` IN(" + subs + ")"))
                        {
                            while (reader.Read())
                            {
                                Packages[reader.GetUInt32(0)] = reader.GetString(1);
                            }
                        }
                    }
                    catch (MySqlException e)
                    {
                        Bootstrap.Log("{0}", e.Message);
                    }
                }
            }
            else
            {
                Packages = new Dictionary <uint, string>();
            }
        }