public PluginPermissionsManager GetPermissionsManager(string connectionString)
        {
            var contextFactory = new OuterInnerResourcePnContextFactory();
            var context        = contextFactory.CreateDbContext(new[] { connectionString });

            return(new PluginPermissionsManager(context));
        }
        //public RentableItemsPnDbAnySql db;

        public void GetContext(string connectionStr)
        {
            OuterInnerResourcePnContextFactory contextFactory = new OuterInnerResourcePnContextFactory();

            DbContext = contextFactory.CreateDbContext(new[] { connectionStr });

            DbContext.Database.Migrate();
            DbContext.Database.EnsureCreated();
        }
        public void SeedDatabase(string connectionString)
        {
            // Get DbContext
            var contextFactory = new OuterInnerResourcePnContextFactory();

            using var context = contextFactory.CreateDbContext(new[] { connectionString });
            // Seed configuration
            OuterInnerResourcePluginSeed.SeedData(context);
        }
        public void AddPluginConfig(IConfigurationBuilder builder, string connectionString)
        {
            var seedData       = new OuterInnerResourceConfigurationSeedData();
            var contextFactory = new OuterInnerResourcePnContextFactory();

            builder.AddPluginConfiguration(
                connectionString,
                seedData,
                contextFactory);
        }
        public void ConfigureDbContext(IServiceCollection services, string connectionString)
        {
            _connectionString = connectionString;
            services.AddDbContext <OuterInnerResourcePnDbContext>(o =>
                                                                  o.UseMySql(connectionString, new MariaDbServerVersion(
                                                                                 new Version(10, 4, 0)), mySqlOptionsAction: builder =>
            {
                builder.EnableRetryOnFailure();
                builder.MigrationsAssembly(PluginAssembly().FullName);
            }));

            var contextFactory = new OuterInnerResourcePnContextFactory();

            using (var context = contextFactory.CreateDbContext(new[] { connectionString }))
            {
                context.Database.Migrate();
                try
                {
                    _outerResourceName = context.PluginConfigurationValues.SingleOrDefault(x => x.Name == "OuterInnerResourceSettings:OuterResourceName")?.Value;
                    _innerResourceName = context.PluginConfigurationValues.SingleOrDefault(x => x.Name == "OuterInnerResourceSettings:InnerResourceName")?.Value;
                    var temp = context.PluginConfigurationValues
                               .SingleOrDefault(x => x.Name == "OuterInnerResourceSettings:MaxParallelism")?.Value;
                    _maxParallelism = string.IsNullOrEmpty(temp) ? 1 : int.Parse(temp);

                    temp = context.PluginConfigurationValues
                           .SingleOrDefault(x => x.Name == "OuterInnerResourceSettings:NumberOfWorkers")?.Value;
                    _numberOfWorkers = string.IsNullOrEmpty(temp) ? 1 : int.Parse(temp);
                }
                catch
                {
                    // ignored
                }
            }

            // Seed database
            SeedDatabase(connectionString);
        }
        public OuterInnerResourcePnDbContext GetDbContext()
        {
            OuterInnerResourcePnContextFactory contextFactory = new OuterInnerResourcePnContextFactory();

            return(contextFactory.CreateDbContext(new[] { ConnectionString }));
        }