using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using MongoDB.Bson.Serialization; using MongoDB.Bson.Serialization.Conventions; using MongoDB.Bson.Serialization.Serializers; using PhoenixLib.Logging; using PhoenixLib.ServiceBus.Extensions; using Plugin.MongoLogs.Services; using Plugin.MongoLogs.Utils; using Plugin.PlayerLogs; using Plugin.PlayerLogs.Messages.Act4; using Plugin.PlayerLogs.Messages.Bazaar; using Plugin.PlayerLogs.Messages.Family; using Plugin.PlayerLogs.Messages.Inventory; using Plugin.PlayerLogs.Messages.LevelUp; using Plugin.PlayerLogs.Messages.Mail; using Plugin.PlayerLogs.Messages.Miniland; using Plugin.PlayerLogs.Messages.Npc; using Plugin.PlayerLogs.Messages.Player; using Plugin.PlayerLogs.Messages.Quest; using Plugin.PlayerLogs.Messages.Raid; using Plugin.PlayerLogs.Messages.RainbowBattle; using Plugin.PlayerLogs.Messages.Shop; using Plugin.PlayerLogs.Messages.Upgrade; using WingsEmu.DTOs.Items; namespace Plugin.MongoLogs.Extensions { public static class MongoLoggerExtensions { public static void AddMongoLogs(this IServiceCollection services) where T : class, IPlayerActionLogMessage { Log.Info($"Registering {typeof(T).Name} logs into Mongo storage..."); services.AddMessageSubscriber>(); } public static void AddMongoLogsPlugin(this IServiceCollection services) { // Allow serialization of plugin log entities that are passed as object through generic logging pipeline. try { BsonSerializer.RegisterSerializer(new ObjectSerializer(_ => true)); } catch { // serializer may already be registered by another startup path } var pack = new ConventionPack { new TypedIgnoreDefaultPropertiesConvention() }; ConventionRegistry.Register("Ignore Default Pack", pack, t => true); services.AddMongoLogs(); services.AddMongoLogs(); // Connection services.AddMongoLogs(); // Act4 services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); // Level ups services.AddMongoLogs(); services.AddMongoLogs(); // Family services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); // Raids services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); // Rainbow Battle services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); // Mini-games services.AddMongoLogs(); services.AddMongoLogs(); // Items services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); // Quests //services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); //services.AddMongoLogs(); // Shops services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); // Inventory services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); // Invitations services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); // Bazaar services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); // Warehouse services.AddMongoLogs(); services.AddMongoLogs(); // Mails services.AddMongoLogs(); services.AddMongoLogs(); services.AddMongoLogs(); // Notes services.AddMongoLogs(); // Npc services.AddMongoLogs(); services.AddSingleton(new MongoLogsBackgroundService(MongoLogsConfiguration.FromEnv())); services.AddSingleton(provider => provider.GetService()); } } }