/// <summary>
        /// Adds MSSQL Server implementations for indexing DICOM data and storing its metadata.
        /// </summary>
        /// <param name="builder">The <see cref="IDicomFunctionsBuilder"/>.</param>
        /// <param name="configuration">The <see cref="IConfiguration"/> root.</param>
        /// <returns>The <paramref name="builder"/> for additional methods calls.</returns>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="builder"/> or <paramref name="configuration"/> is <see langword="null"/>.
        /// </exception>
        public static IDicomFunctionsBuilder AddSqlServer(this IDicomFunctionsBuilder builder, IConfiguration configuration)
        {
            EnsureArg.IsNotNull(builder, nameof(builder));
            EnsureArg.IsNotNull(configuration, nameof(configuration));

            return(builder.AddSqlServer(c => configuration.GetSection(SqlServerDataStoreConfiguration.SectionName).Bind(c)));
        }
        /// <summary>
        /// Adds Azure Storage implementations for storing DICOM metadata.
        /// </summary>
        /// <param name="builder">The <see cref="IDicomFunctionsBuilder"/>.</param>
        /// <param name="configuration">The <see cref="IConfiguration"/> root.</param>
        /// <returns>The <paramref name="builder"/> for additional methods calls.</returns>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="builder"/> or <paramref name="configuration"/> is <see langword="null"/>.
        /// </exception>
        public static IDicomFunctionsBuilder AddMetadataStorageDataStore(this IDicomFunctionsBuilder builder, IConfiguration configuration)
        {
            EnsureArg.IsNotNull(builder, nameof(builder));
            EnsureArg.IsNotNull(configuration, nameof(configuration));

            string containerName = configuration
                                   .GetSection(BlobDataStoreConfiguration.SectionName)
                                   .GetSection(DicomBlobContainerConfiguration.SectionName)
                                   .Get <DicomBlobContainerConfiguration>()
                                   .Metadata;

            return(builder.AddMetadataStorageDataStore(configuration, containerName));
        }
Example #3
0
        /// <summary>
        /// Adds the metadata store for the DICOM functions.
        /// </summary>
        /// <param name="functionsBuilder">The DICOM functions builder instance.</param>
        /// <param name="containerName">The name of the metadata container.</param>
        /// <param name="configuration">The configuration for the function.</param>
        /// <returns>The functions builder.</returns>
        public static IDicomFunctionsBuilder AddMetadataStorageDataStore(
            this IDicomFunctionsBuilder functionsBuilder,
            IConfiguration configuration,
            string containerName)
        {
            EnsureArg.IsNotNull(functionsBuilder, nameof(functionsBuilder));
            EnsureArg.IsNotNull(configuration, nameof(configuration));

            var blobConfig = configuration.GetSection(BlobServiceClientOptions.DefaultSectionName);

            functionsBuilder.Services
            .AddSingleton <MetadataStoreConfigurationSection>()
            .AddTransient <IStoreConfigurationSection>(sp => sp.GetRequiredService <MetadataStoreConfigurationSection>())
            .AddPersistence <IMetadataStore, BlobMetadataStore, LoggingMetadataStore>()
            .AddBlobServiceClient(blobConfig)
            .Configure <BlobContainerConfiguration>(Constants.MetadataContainerConfigurationName, c => c.ContainerName = containerName);

            return(functionsBuilder);
        }
Example #4
0
        public static IDicomFunctionsBuilder AddSqlServer(
            this IDicomFunctionsBuilder dicomFunctionsBuilder,
            Action <SqlServerDataStoreConfiguration> configureAction)
        {
            EnsureArg.IsNotNull(dicomFunctionsBuilder, nameof(dicomFunctionsBuilder));
            EnsureArg.IsNotNull(configureAction, nameof(configureAction));

            IServiceCollection services = dicomFunctionsBuilder.Services;

            // Add core SQL services
            services
            .AddSqlServerConnection(configureAction)
            .AddForegroundSqlSchemaVersionResolver();

            // Add SQL-specific implementations
            services
            .AddSqlIndexDataStores()
            .AddSqlInstanceStores()
            .AddSqlExtendedQueryTagStores()
            .AddSqlExtendedQueryTagErrorStores()
            .AddSqlPartitionStore();

            return(dicomFunctionsBuilder);
        }