Exemplo n.º 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="UmbracoDatabaseFactory"/>.
        /// </summary>
        /// <remarks>Used by the other ctor and in tests.</remarks>
        public UmbracoDatabaseFactory(
            ILogger <UmbracoDatabaseFactory> logger,
            ILoggerFactory loggerFactory,
            IOptions <GlobalSettings> globalSettings,
            IOptionsMonitor <ConnectionStrings> connectionStrings,
            IMapperCollection mappers,
            IDbProviderFactoryCreator dbProviderFactoryCreator,
            DatabaseSchemaCreatorFactory databaseSchemaCreatorFactory,
            NPocoMapperCollection npocoMappers)
        {
            _globalSettings               = globalSettings;
            _mappers                      = mappers ?? throw new ArgumentNullException(nameof(mappers));
            _dbProviderFactoryCreator     = dbProviderFactoryCreator ?? throw new ArgumentNullException(nameof(dbProviderFactoryCreator));
            _databaseSchemaCreatorFactory = databaseSchemaCreatorFactory ?? throw new ArgumentNullException(nameof(databaseSchemaCreatorFactory));
            _npocoMappers                 = npocoMappers;
            _logger        = logger ?? throw new ArgumentNullException(nameof(logger));
            _loggerFactory = loggerFactory;

            ConnectionStrings umbracoConnectionString = connectionStrings.Get(Constants.System.UmbracoConnectionName);

            if (!umbracoConnectionString.IsConnectionStringConfigured())
            {
                logger.LogDebug("Missing connection string, defer configuration.");
                return; // not configured
            }

            Configure(umbracoConnectionString);
        }
Exemplo n.º 2
0
        public SqlMainDomLock(
            ILogger <SqlMainDomLock> logger,
            ILoggerFactory loggerFactory,
            IOptions <GlobalSettings> globalSettings,
            IOptionsMonitor <ConnectionStrings> connectionStrings,
            IDbProviderFactoryCreator dbProviderFactoryCreator,
            IHostingEnvironment hostingEnvironment,
            DatabaseSchemaCreatorFactory databaseSchemaCreatorFactory,
            NPocoMapperCollection npocoMappers)
        {
            // unique id for our appdomain, this is more unique than the appdomain id which is just an INT counter to its safer
            _lockId             = Guid.NewGuid().ToString();
            _logger             = logger;
            _globalSettings     = globalSettings;
            _sqlServerSyntax    = new SqlServerSyntaxProvider(_globalSettings);
            _hostingEnvironment = hostingEnvironment;
            _dbFactory          = new UmbracoDatabaseFactory(
                loggerFactory.CreateLogger <UmbracoDatabaseFactory>(),
                loggerFactory,
                _globalSettings,
                connectionStrings,
                new MapperCollection(() => Enumerable.Empty <BaseMapper>()),
                dbProviderFactoryCreator,
                databaseSchemaCreatorFactory,
                npocoMappers);

            MainDomKey = MainDomKeyPrefix + "-" + (Environment.MachineName + MainDom.GetMainDomId(_hostingEnvironment)).GenerateHash <SHA1>();
        }
Exemplo n.º 3
0
        public SqlMainDomLock(
            ILoggerFactory loggerFactory,
            IOptions <GlobalSettings> globalSettings,
            IOptionsMonitor <ConnectionStrings> connectionStrings,
            IDbProviderFactoryCreator dbProviderFactoryCreator,
            IMainDomKeyGenerator mainDomKeyGenerator,
            DatabaseSchemaCreatorFactory databaseSchemaCreatorFactory,
            NPocoMapperCollection npocoMappers)
        {
            // unique id for our appdomain, this is more unique than the appdomain id which is just an INT counter to its safer
            _lockId         = Guid.NewGuid().ToString();
            _logger         = loggerFactory.CreateLogger <SqlMainDomLock>();
            _globalSettings = globalSettings;

            _dbFactory = new UmbracoDatabaseFactory(
                loggerFactory.CreateLogger <UmbracoDatabaseFactory>(),
                loggerFactory,
                _globalSettings,
                connectionStrings,
                new MapperCollection(() => Enumerable.Empty <BaseMapper>()),
                dbProviderFactoryCreator,
                databaseSchemaCreatorFactory,
                npocoMappers);

            MainDomKey = MainDomKeyPrefix + "-" + mainDomKeyGenerator.GenerateKey();
        }
Exemplo n.º 4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="UmbracoDatabaseFactory"/>.
 /// </summary>
 /// <remarks>Used by the other ctor and in tests.</remarks>
 public UmbracoDatabaseFactory(
     ILogger <UmbracoDatabaseFactory> logger,
     ILoggerFactory loggerFactory,
     IOptions <GlobalSettings> globalSettings,
     IOptionsMonitor <ConnectionStrings> connectionStrings,
     IMapperCollection mappers,
     IDbProviderFactoryCreator dbProviderFactoryCreator,
     DatabaseSchemaCreatorFactory databaseSchemaCreatorFactory,
     NPocoMapperCollection npocoMappers) :
     this(logger, loggerFactory, globalSettings, mappers, dbProviderFactoryCreator, databaseSchemaCreatorFactory, npocoMappers, connectionStrings?.CurrentValue?.UmbracoConnectionString?.ConnectionString)
 {
 }
Exemplo n.º 5
0
 public TestUmbracoDatabaseFactoryProvider(
     ILoggerFactory loggerFactory,
     IOptions <GlobalSettings> globalSettings,
     IOptionsMonitor <ConnectionStrings> connectionStrings,
     IMapperCollection mappers,
     IDbProviderFactoryCreator dbProviderFactoryCreator,
     DatabaseSchemaCreatorFactory databaseSchemaCreatorFactory,
     NPocoMapperCollection npocoMappers)
 {
     _loggerFactory                = loggerFactory;
     _globalSettings               = globalSettings;
     _connectionStrings            = connectionStrings;
     _mappers                      = mappers;
     _dbProviderFactoryCreator     = dbProviderFactoryCreator;
     _databaseSchemaCreatorFactory = databaseSchemaCreatorFactory;
     _npocoMappers                 = npocoMappers;
 }
Exemplo n.º 6
0
 public UnattendedInstaller(
     DatabaseSchemaCreatorFactory databaseSchemaCreatorFactory,
     IEventAggregator eventAggregator,
     IOptions <UnattendedSettings> unattendedSettings,
     IUmbracoDatabaseFactory databaseFactory,
     IDbProviderFactoryCreator dbProviderFactoryCreator,
     ILogger <UnattendedInstaller> logger,
     IRuntimeState runtimeState)
 {
     _databaseSchemaCreatorFactory = databaseSchemaCreatorFactory ?? throw new ArgumentNullException(nameof(databaseSchemaCreatorFactory));
     _eventAggregator          = eventAggregator ?? throw new ArgumentNullException(nameof(eventAggregator));
     _unattendedSettings       = unattendedSettings;
     _databaseFactory          = databaseFactory;
     _dbProviderFactoryCreator = dbProviderFactoryCreator;
     _logger       = logger;
     _runtimeState = runtimeState;
 }
Exemplo n.º 7
0
    private static IUmbracoBuilder AddMainDom(this IUmbracoBuilder builder)
    {
        builder.Services.AddSingleton <IMainDomKeyGenerator, DefaultMainDomKeyGenerator>();
        builder.Services.AddSingleton <IMainDomLock>(factory =>
        {
            IOptions <GlobalSettings> globalSettings = factory.GetRequiredService <IOptions <GlobalSettings> >();
            IOptionsMonitor <ConnectionStrings> connectionStrings =
                factory.GetRequiredService <IOptionsMonitor <ConnectionStrings> >();
            IHostingEnvironment hostingEnvironment = factory.GetRequiredService <IHostingEnvironment>();

            IDbProviderFactoryCreator dbCreator = factory.GetRequiredService <IDbProviderFactoryCreator>();
            DatabaseSchemaCreatorFactory databaseSchemaCreatorFactory =
                factory.GetRequiredService <DatabaseSchemaCreatorFactory>();
            ILoggerFactory loggerFactory             = factory.GetRequiredService <ILoggerFactory>();
            NPocoMapperCollection npocoMappers       = factory.GetRequiredService <NPocoMapperCollection>();
            IMainDomKeyGenerator mainDomKeyGenerator = factory.GetRequiredService <IMainDomKeyGenerator>();

            switch (globalSettings.Value.MainDomLock)
            {
            case "SqlMainDomLock":
                return(new SqlMainDomLock(
                           loggerFactory,
                           globalSettings,
                           connectionStrings,
                           dbCreator,
                           mainDomKeyGenerator,
                           databaseSchemaCreatorFactory,
                           npocoMappers));

            case "MainDomSemaphoreLock":
                return(new MainDomSemaphoreLock(
                           loggerFactory.CreateLogger <MainDomSemaphoreLock>(),
                           hostingEnvironment));

            case "FileSystemMainDomLock":
            default:
                return(new FileSystemMainDomLock(
                           loggerFactory.CreateLogger <FileSystemMainDomLock>(),
                           mainDomKeyGenerator, hostingEnvironment,
                           factory.GetRequiredService <IOptionsMonitor <GlobalSettings> >()));
            }
        });

        return(builder);
    }
Exemplo n.º 8
0
        /// <summary>
        /// Initializes a new instance of the <see cref="UmbracoDatabase"/> class.
        /// </summary>
        /// <remarks>
        /// <para>Used by UmbracoDatabaseFactory to create databases.</para>
        /// <para>Also used by DatabaseBuilder for creating databases and installing/upgrading.</para>
        /// </remarks>
        public UmbracoDatabase(
            string connectionString,
            ISqlContext sqlContext,
            DbProviderFactory provider,
            ILogger <UmbracoDatabase> logger,
            IBulkSqlInsertProvider bulkSqlInsertProvider,
            DatabaseSchemaCreatorFactory databaseSchemaCreatorFactory,
            IEnumerable <IMapper> mapperCollection = null)
            : base(connectionString, sqlContext.DatabaseType, provider, sqlContext.SqlSyntax.DefaultIsolationLevel)
        {
            SqlContext                    = sqlContext;
            _logger                       = logger;
            _bulkSqlInsertProvider        = bulkSqlInsertProvider;
            _databaseSchemaCreatorFactory = databaseSchemaCreatorFactory;
            _mapperCollection             = mapperCollection;

            Init();
        }
Exemplo n.º 9
0
 public SqlMainDomLock(
     ILogger <SqlMainDomLock> logger,
     ILoggerFactory loggerFactory,
     IOptions <GlobalSettings> globalSettings,
     IOptionsMonitor <ConnectionStrings> connectionStrings,
     IDbProviderFactoryCreator dbProviderFactoryCreator,
     IHostingEnvironment hostingEnvironment,
     DatabaseSchemaCreatorFactory databaseSchemaCreatorFactory,
     NPocoMapperCollection npocoMappers)
     : this(
         loggerFactory,
         globalSettings,
         connectionStrings,
         dbProviderFactoryCreator,
         StaticServiceProvider.Instance.GetRequiredService <IMainDomKeyGenerator>(),
         databaseSchemaCreatorFactory,
         npocoMappers)
 {
 }
Exemplo n.º 10
0
 public SqlMainDomLock(
     ILogger <SqlMainDomLock> logger,
     ILoggerFactory loggerFactory,
     IOptions <GlobalSettings> globalSettings,
     IOptionsMonitor <ConnectionStrings> connectionStrings,
     IDbProviderFactoryCreator dbProviderFactoryCreator,
     IHostingEnvironment hostingEnvironment,
     DatabaseSchemaCreatorFactory databaseSchemaCreatorFactory,
     NPocoMapperCollection npocoMappers)
     : this(
         logger,
         loggerFactory,
         globalSettings,
         connectionStrings,
         dbProviderFactoryCreator,
         hostingEnvironment,
         databaseSchemaCreatorFactory,
         npocoMappers,
         connectionStrings.CurrentValue.UmbracoConnectionString.ConnectionString
         )
 {
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="UmbracoDatabaseFactory"/>.
        /// </summary>
        /// <remarks>Used by the other ctor and in tests.</remarks>
        public UmbracoDatabaseFactory(
            ILogger <UmbracoDatabaseFactory> logger,
            ILoggerFactory loggerFactory,
            IOptions <GlobalSettings> globalSettings,
            IOptionsMonitor <ConnectionStrings> connectionStrings,
            IMapperCollection mappers,
            IDbProviderFactoryCreator dbProviderFactoryCreator,
            DatabaseSchemaCreatorFactory databaseSchemaCreatorFactory,
            NPocoMapperCollection npocoMappers)
        {
            _globalSettings               = globalSettings;
            _mappers                      = mappers ?? throw new ArgumentNullException(nameof(mappers));
            _dbProviderFactoryCreator     = dbProviderFactoryCreator ?? throw new ArgumentNullException(nameof(dbProviderFactoryCreator));
            _databaseSchemaCreatorFactory = databaseSchemaCreatorFactory ?? throw new ArgumentNullException(nameof(databaseSchemaCreatorFactory));
            _npocoMappers                 = npocoMappers;
            _logger        = logger ?? throw new ArgumentNullException(nameof(logger));
            _loggerFactory = loggerFactory;

            var settings = connectionStrings.CurrentValue.UmbracoConnectionString;

            if (settings == null)
            {
                logger.LogDebug("Missing connection string, defer configuration.");
                return; // not configured
            }

            // could as well be <add name="umbracoDbDSN" connectionString="" providerName="" />
            // so need to test the values too
            if (settings.IsConnectionStringConfigured() == false)
            {
                logger.LogDebug("Empty connection string or provider name, defer configuration.");
                return; // not configured
            }

            Configure(settings.ConnectionString, settings.ProviderName);
        }