Пример #1
0
        public static async Task Main(string[] args)
        {
            // Use args in application
            new ArgsHelper().SetEnvironmentByArgs(args);

            var services = new ServiceCollection();

            // Setup AppSettings
            services = await SetupAppSettings.FirstStepToAddSingleton(services);

            // Inject services
            RegisterDependencies.Configure(services);
            var serviceProvider = services.BuildServiceProvider();
            var appSettings     = serviceProvider.GetRequiredService <AppSettings>();

            services.AddMonitoringWorkerService(appSettings, AppSettings.StarskyAppType.Importer);
            services.AddApplicationInsightsLogging(appSettings);

            new SetupDatabaseTypes(appSettings, services).BuilderDb();
            serviceProvider = services.BuildServiceProvider();

            var import           = serviceProvider.GetService <IImport>();
            var console          = serviceProvider.GetRequiredService <IConsole>();
            var exifToolDownload = serviceProvider.GetRequiredService <IExifToolDownload>();
            var webLogger        = serviceProvider.GetRequiredService <IWebLogger>();

            // Migrations before importing
            await RunMigrations.Run(serviceProvider.GetService <ApplicationDbContext>(), webLogger, appSettings);

            // Help and other Command Line Tools args are included in the ImporterCli
            await new ImportCli(import, appSettings, console, exifToolDownload).Importer(args);

            await new FlushApplicationInsights(serviceProvider, appSettings, webLogger).FlushAsync();
        }
Пример #2
0
 /// <summary>
 /// Run the latest migration on the database.
 /// To start over with a SQLite database please remove it and
 /// it will add a new one
 /// </summary>
 private async Task EfCoreMigrationsOnProject(IApplicationBuilder app)
 {
     using var serviceScope = app.ApplicationServices
                              .GetRequiredService <IServiceScopeFactory>()
                              .CreateScope();
     await RunMigrations.Run(serviceScope);
 }
Пример #3
0
        public async Task MySqlException()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseInMemoryDatabase(databaseName: "MovieListDatabase")
                          .Options;

            Assert.IsNotNull(options);
            await RunMigrations.Run(
                new AppDbMySqlException(options), new FakeIWebLogger(), new AppSettings { DatabaseType = AppSettings.DatabaseTypeList.Mysql }, 1);

            // should not crash
        }
Пример #4
0
        /// <summary>
        /// Starsky Admin CLI to manage user admin tasks
        /// </summary>
        /// <param name="args">use -h to see all options</param>
        internal static async Task Main(string[] args)
        {
            // Use args in application
            new ArgsHelper().SetEnvironmentByArgs(args);

            var services = new ServiceCollection();

            // Setup AppSettings
            services = await SetupAppSettings.FirstStepToAddSingleton(services);

            // Inject services
            RegisterDependencies.Configure(services);
            var serviceProvider = services.BuildServiceProvider();
            var appSettings     = serviceProvider.GetRequiredService <AppSettings>();

            services.AddMonitoringWorkerService(appSettings, AppSettings.StarskyAppType.Geo);
            services.AddApplicationInsightsLogging(appSettings);

            var webLogger = serviceProvider.GetRequiredService <IWebLogger>();

            new SetupDatabaseTypes(appSettings, services).BuilderDb();
            serviceProvider = services.BuildServiceProvider();

            // Use args in application
            appSettings.Verbose = ArgsHelper.NeedVerbose(args);

            var userManager = serviceProvider.GetService <IUserManager>();

            appSettings.ApplicationType = AppSettings.StarskyAppType.Admin;

            if (new ArgsHelper().NeedHelp(args))
            {
                new ArgsHelper(appSettings).NeedHelpShowDialog();
                return;
            }

            await RunMigrations.Run(serviceProvider.GetService <ApplicationDbContext>(),
                                    webLogger, appSettings);

            await new ConsoleAdmin(userManager, new ConsoleWrapper()).Tool(
                ArgsHelper.GetName(args), ArgsHelper.GetUserInputPassword(args));

            await new FlushApplicationInsights(serviceProvider).FlushAsync();
        }
Пример #5
0
        public async Task Test()
        {
            IServiceCollection services = new ServiceCollection();

            services.AddSingleton <IWebLogger, FakeIWebLogger>();

            var efServiceProvider = new ServiceCollection().AddEntityFrameworkInMemoryDatabase().BuildServiceProvider();

            services
            .AddDbContext <ApplicationDbContext>(b =>
                                                 b.UseInMemoryDatabase("test1234").UseInternalServiceProvider(efServiceProvider));
            var serviceProvider     = services.BuildServiceProvider();
            var serviceScopeFactory = serviceProvider.GetRequiredService <IServiceScopeFactory>();

            Assert.IsNotNull(serviceScopeFactory);
            await RunMigrations.Run(serviceScopeFactory.CreateScope(), 1);

            // expect exception: Relational-specific methods can only be used when the context is using a relational database provider.
        }