Example #1
0
        private static async Task ExtractMetadataAsync(
            UpgradeServiceAccessor services, SqlExecutor executor, SqlWorkerResult result, SqlWorkerTask task,
            CancellationToken token)
        {
            var set               = new MetadataSet();
            var mapping           = new MetadataMapping(services.StorageDriver, services.NameBuilder);
            var metadataExtractor = new MetadataExtractor(mapping, executor);

            foreach (var metadataTask in services.MappingResolver.GetMetadataTasks()
                     .Where(metadataTask => !ShouldSkipMetadataExtraction(mapping, result, metadataTask)))
            {
                try {
                    if (task.HasFlag(SqlWorkerTask.ExtractMetadataAssemblies))
                    {
                        await metadataExtractor.ExtractAssembliesAsync(set, metadataTask, token).ConfigureAwait(false);
                    }

                    if (task.HasFlag(SqlWorkerTask.ExtractMetadataTypes))
                    {
                        await metadataExtractor.ExtractTypesAsync(set, metadataTask, token).ConfigureAwait(false);
                    }

                    if (task.HasFlag(SqlWorkerTask.ExtractMetadataExtension))
                    {
                        await metadataExtractor.ExtractExtensionsAsync(set, metadataTask, token).ConfigureAwait(false);
                    }
                }
                catch (Exception exception) {
                    UpgradeLog.Warning(
                        Strings.LogFailedToExtractMetadataFromXYZ, metadataTask.Catalog, metadataTask.Schema, exception);
                }
            }
            result.Metadata = set;
        }
Example #2
0
        private static PairedNodeCollection <Schema, Table> GetSchemaTables(SqlWorkerResult result, SqlExtractionTask task)
        {
            var catalog = GetCatalog(result, task.Catalog);
            var schema  = GetSchema(catalog, task.Schema);

            return(schema.Tables);
        }
Example #3
0
 private static Catalog GetCatalog(SqlWorkerResult result, string catalogName)
 {
     if (catalogName.IsNullOrEmpty())
     {
         return(result.Schema.Catalogs.Single(c => c.Name == catalogName));
     }
     return(result.Schema.Catalogs[catalogName]);
 }
Example #4
0
        private static bool ShouldSkipMetadataExtraction(MetadataMapping mapping, SqlWorkerResult result, SqlExtractionTask task)
        {
            if (result.Schema == null)
            {
                return(false);
            }

            var tables = GetSchemaTables(result, task);

            return(tables[mapping.Assembly] == null && tables[mapping.Type] == null && tables[mapping.Extension] == null);
        }
Example #5
0
        private static SqlWorkerResult Run(UpgradeServiceAccessor services, SqlWorkerTask task)
        {
            var result   = new SqlWorkerResult();
            var executor = new SqlExecutor(services.StorageDriver, services.Connection);

            if ((task & SqlWorkerTask.DropSchema) > 0)
            {
                DropSchema(services, executor);
            }
            if ((task & SqlWorkerTask.ExtractSchema) > 0)
            {
                result.Schema = ExtractSchema(services, executor);
            }
            if ((task & (SqlWorkerTask.ExtractMetadataTypes | SqlWorkerTask.ExtractMetadataAssemblies | SqlWorkerTask.ExtractMetadataExtension)) > 0)
            {
                ExtractMetadata(services, executor, result, task);
            }
            return(result);
        }
Example #6
0
        private static async Task <SqlWorkerResult> RunAsync(
            UpgradeServiceAccessor services, SqlWorkerTask task, CancellationToken token)
        {
            var result   = new SqlWorkerResult();
            var executor = new SqlExecutor(services.StorageDriver, services.Connection);

            if ((task & SqlWorkerTask.DropSchema) > 0)
            {
                await DropSchemaAsync(services, executor, token).ConfigureAwait(false);
            }

            if ((task & SqlWorkerTask.ExtractSchema) > 0)
            {
                result.Schema = await ExtractSchemaAsync(services, executor, token).ConfigureAwait(false);
            }

            if ((task & (SqlWorkerTask.ExtractMetadataTypes | SqlWorkerTask.ExtractMetadataAssemblies | SqlWorkerTask.ExtractMetadataExtension)) > 0)
            {
                await ExtractMetadataAsync(services, executor, result, task, token).ConfigureAwait(false);
            }

            return(result);
        }
Example #7
0
 private static Catalog GetCatalog(SqlWorkerResult result, string catalogName) =>
 catalogName.IsNullOrEmpty()
 ? result.Schema.Catalogs.Single(c => c.Name == catalogName)
 : result.Schema.Catalogs[catalogName];