/// <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)); }
/// <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); }
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); }