/// <summary>
        /// Kitbags are a set of packages that contain reusable plugins.
        /// </summary>
        /// <param name="services">Service collection from Microsoft.Extensions</param>
        /// <param name="sectionName">Unique section name for registration</param>
        /// <returns></returns>
        public static IKitbagBuilder AddKitbag(this IServiceCollection services, IConfiguration?configuration = null,
                                               string sectionName = "App")
        {
            var builder    = new KitbagBuilder(services, configuration);
            var properties = builder.GetSettings <AppProperties>(sectionName);

            builder.Services.AddMemoryCache();
            builder.Services.AddSingleton(properties);
            Console.WriteLine($"App: {properties.Name} | Version: {properties.Version} is up and running");
            return(builder);
        }
Esempio n. 2
0
        public static IKitbagBuilder AddDbUp(this IServiceCollection services, Action <ILoggingBuilder> loggingConfig, string appSettingFileName = "appsettings.json", string sectionName = "DbUp")
        {
            var config = new ConfigurationBuilder()
                         .SetBasePath(Directory.GetCurrentDirectory())
                         .AddJsonFile(appSettingFileName, optional: true, reloadOnChange: true).Build();

            services.AddSingleton <IConfiguration>(config);
            services.AddLogging(loggingConfig);

            var builder = new KitbagBuilder(services, config);

            if (!builder.TryRegisterKitBag(sectionName))
            {
                return(builder);
            }

            var dbUpProperties = builder.GetSettings <DatabaseMigrationProperties>(sectionName);

            builder.Services.AddSingleton(dbUpProperties);
            builder.Services.AddSingleton <IMigrationService, DbUpMigrationService>();
            builder.Services.AddSingleton <IAutoChangeService, AutoChangeService>();

            return(builder);
        }