Esempio n. 1
0
        /// <summary>
        /// Use the KickStart extension to configure MongoDB.
        /// </summary>
        /// <param name="configurationBuilder">The configuration builder.</param>
        /// <returns>
        /// A fluent <see langword="interface"/> to configure KickStart.
        /// </returns>
        public static IConfigurationBuilder UseMongoDB(this IConfigurationBuilder configurationBuilder)
        {
            var options = new MongoOptions();
            var starter = new MongoStarter(options);
            var builder = new MongoBuilder(options);

            configurationBuilder.ExcludeName("MongoDB");
            configurationBuilder.Use(starter);

            return(configurationBuilder);
        }
Esempio n. 2
0
        /// <summary>
        /// Use the KickStart extension to configure MongoDB.
        /// </summary>
        /// <param name="configurationBuilder">The configuration builder.</param>
        /// <returns>
        /// A fluent <see langword="interface"/> to configure KickStart.
        /// </returns>
        public static IConfigurationBuilder UseMongoDB(this IConfigurationBuilder configurationBuilder)
        {
            var options = new MongoOptions();
            var starter = new MongoStarter(options);
            var builder = new MongoBuilder(options);

            configurationBuilder.ExcludeAssemblyFor <MongoStarter>();
            configurationBuilder.ExcludeAssemblyFor <global::MongoDB.Driver.IMongoDatabase>();
            configurationBuilder.Use(starter);

            return(configurationBuilder);
        }
        /// <summary>
        /// Connect the project to a mongo database.
        /// </summary>
        /// <param name="builder">Builder for creating an Impartner service.</param>
        /// <param name="configureMongo">Additional configuration for Mongo.</param>
        public static IImpartnerBuilder AddMongo(this IImpartnerBuilder builder, Action <IMongoBuilder> configureMongo = null)
        {
            var mongoBuilder            = new MongoBuilder();
            var camelCaseBsonConvention = new ConventionPack {
                new CamelCaseElementNameConvention()
            };

            builder.ServiceCollection.Configure <MongoDbSettings>
            (
                builder.Configuration.GetSection(nameof(MongoDbSettings))
            );
            builder.ServiceCollection.Configure <MongoMigrationSettings>
            (
                builder.Configuration.GetSection(nameof(MongoDbSettings))
            );

            builder.ServiceCollection.AddScoped <IMongoRepository, MongoRepository>
            (
                provider =>
            {
                var(httpProvider, mongoSettings) = (
                    provider.GetRequiredService <IHttpContextAccessor>(),
                    provider.GetRequiredService <IOptions <MongoDbSettings> >().Value
                    );
                var client = new MongoClient(mongoSettings.ConnectionString);

                return(new MongoRepository(client, httpProvider, mongoSettings));
            }
            );

            if (builder.ServiceCollection.All(value => value.ServiceType != typeof(IHttpContextAccessor)))
            {
                builder.ServiceCollection.AddHttpContextAccessor();
            }

            mongoBuilder.AddConvention(nameof(camelCaseBsonConvention), camelCaseBsonConvention);

            builder.ServiceCollection.AddMigration();

            configureMongo?.Invoke(mongoBuilder);

            return(builder);
        }