public void Load() { Logger = new ConsoleLogger(); var currentDir = Directory.GetCurrentDirectory(); Config = new XfQueryConfig(); Logger.Ok("Loading XFQuery Core"); var configDir = Directory.CreateDirectory($"{currentDir}/Configs"); var functionsConfig = Directory.CreateDirectory($"{configDir}/Functions"); if (configDir.Exists && functionsConfig.Exists) { if (File.Exists($"{currentDir}/Configs/MainConfig.json")) { var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("Configs/MainConfig.json", false, true) .AddEnvironmentVariables(); var configuration = builder.Build(); configuration.Bind(Config); } else { LoadDefaultConfig($"{currentDir}/Configs"); } } else { if (configDir.Exists && functionsConfig.Exists) { LoadDefaultConfig($"{currentDir}/Configs"); var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile(@"Configs/MainConfig.json", false, true) .AddEnvironmentVariables(); var configuration = builder.Build(); configuration.Bind(Config); } else { throw new Exception("Cannot create an configs folder"); } } Logger.Ok("Connecting to MongoDB"); DatabaseManager = new DatabaseManager(Config); _addonManager = new AddonManager(); Logger.Ok("Loading extensions"); }
public DatabaseManager(XfQueryConfig config) { string GetConfig() { return(config.Database.ConnectionString == string.Empty ? $"mongodb+srv://{config.Database.Login}:{config.Database.Password}@{config.Database.Host}:{config.Database.Port}/{config.Database.Database}?authSource=admin&readPreference=primary&appname=XFQuery" : config.Database.ConnectionString); } var mongoClient = new MongoClient(GetConfig()); mongoClient.StartSession(); var mongoDatabase = mongoClient.GetDatabase($"{config.Database.Database}"); MongoDatabase = mongoDatabase; }