Exemplo n.º 1
0
        private void EnsureAdminDatabaseExists(Guid adminAppKey)
        {
            int    timeout          = Timeouts.PublicDatabase;
            string connectionString = PublicConnectionString;

            if (!DatabaseUtils.DatabaseExists(connectionString, timeout))
            {
                PublicDatabaseCreation.Execute(
                    adminAppKey, connectionString, timeout, _configuration.MaxDegreeOfParallelism, _configuration.Pipelines);
            }
            else
            {
                var tables = DatabaseUtils.GetTablesInSchema(
                    connectionString, timeout, false, MetaDataSchema.MetadataSchemaName);

                if (!tables.Any())
                {
                    // database exists, but no tables in the METADATA schema!

                    // In this case we try to generate just the database objects associated with
                    // the Public database (we assume _all_ tables and schemas are missing)...
                    PublicDatabaseCreation.CreatePublicDatabaseObjects(
                        adminAppKey, connectionString, timeout, _configuration.MaxDegreeOfParallelism, _configuration.Pipelines);
                }
            }
        }
Exemplo n.º 2
0
        private void EnsureAdminDatabaseExists()
        {
            var timeout = Timeouts.AdminDatabase;

            if (!DatabaseUtils.DatabaseExists(AdminConnectionString, timeout))
            {
                _applicationKey = AdminDatabaseCreation.Execute(AdminConnectionString, timeout, _configuration.MaxDegreeOfParallelism, _configuration.Pipelines);
            }
            else
            {
                var tables = DatabaseUtils.GetTablesInSchema(AdminConnectionString, timeout, false, ControlSchema.ControlSchemaName);
                if (!tables.Any())
                {
                    // database exists, but no tables in the CONTROL schema!

                    // The user may have created the database and pointed Verto at it,
                    // or we might have created the database on Azure and the create database
                    // statement timed out (but the database was still created).

                    // In this case we try to generate just the database objects associated with
                    // the Admin database (we assume _all_ tables and schemas are missing)...
                    _applicationKey = AdminDatabaseCreation.CreateAdminDatabaseObjects(
                        AdminConnectionString,
                        timeout,
                        _configuration.MaxDegreeOfParallelism,
                        _configuration.Pipelines);
                }
            }
        }
Exemplo n.º 3
0
        public bool ConsolidationConfigChanged(ConsolidationParams c)
        {
            if (DatabaseUtils.DatabaseExists(AdminConnectionString, Timeouts.AdminDatabase))
            {
                var fs = new FederationSchema(
                    AdminConnectionString,
                    Timeouts.AdminDatabase,
                    _configuration.MaxDegreeOfParallelism,
                    _configuration.Pipelines);

                if (fs.ConsolidationConfigTableExists())
                {
                    return(fs.ConsolidationConfigChanged(c));
                }
            }

            return(false);
        }
Exemplo n.º 4
0
        public void CheckIdenticalAppKey(Guid adminAppKey)
        {
            if (DatabaseUtils.DatabaseExists(PublicConnectionString, Timeouts.PublicDatabase))
            {
                var tables = DatabaseUtils.GetTablesInSchema(
                    PublicConnectionString, Timeouts.PublicDatabase, false, MetaDataSchema.MetadataSchemaName);

                if (tables.Any())
                {
                    MetaDataSchema mdSchema = new MetaDataSchema(
                        PublicConnectionString, Timeouts.PublicDatabase, _configuration.MaxDegreeOfParallelism, _configuration.Pipelines);

                    Guid existingAppKey = mdSchema.GetApplicationKey();
                    if (existingAppKey != adminAppKey)
                    {
                        throw new ApplicationException(
                                  $"Application key in Public database ({DatabaseUtils.GetConnectionDescription(PublicConnectionString)}) is not the same as that in the Admin database ({DatabaseUtils.GetConnectionDescription(AdminConnectionString)})");
                    }
                }
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Gets the application Guid - a value that ties Admin and Public databases
        /// together as part of the same application.
        /// </summary>
        /// <returns></returns>
        public Guid GetApplicationKey()
        {
            var result = Guid.Empty;

            if (DatabaseUtils.DatabaseExists(ConnectionString, TimeoutSecs) &&
                DatabaseUtils.TableExists(ConnectionString, TimeoutSecs, ConfigTableName, SchemaName))
            {
                _log.Debug("Getting application key guid");

                var sql = $"select app_key from {GetQualifiedTableName(ConfigTableName)}";

                var r = DatabaseUtils.ExecuteScalar(ConnectionString, sql, TimeoutSecs);
                if (r != null && r != DBNull.Value)
                {
                    result = (Guid)r;
                }

                _log.DebugFormat("Application key guid = {0}", result.ToString());
            }

            return(result);
        }
Exemplo n.º 6
0
 public bool TablesExist()
 {
     return
         (DatabaseUtils.DatabaseExists(PublicConnectionString, Timeouts.PublicDatabase) &&
          DatabaseUtils.TableExists(PublicConnectionString, Timeouts.PublicDatabase, "TIMETABLE_CONFIG", "MISC"));
 }
Exemplo n.º 7
0
 public bool DatabaseExists()
 {
     return(DatabaseUtils.DatabaseExists(_connectionString, _timeoutSecs));
 }