public static IFhirServerBuilder AddSqlServer()

in src/Microsoft.Health.Fhir.SqlServer/Registration/FhirServerBuilderSqlServerRegistrationExtensions.cs [33:232]


        public static IFhirServerBuilder AddSqlServer(this IFhirServerBuilder fhirServerBuilder, Action<SqlServerDataStoreConfiguration> configureAction = null)
        {
            EnsureArg.IsNotNull(fhirServerBuilder, nameof(fhirServerBuilder));
            IServiceCollection services = fhirServerBuilder.Services;

            services.AddSqlServerConnection(configureAction);
            services.AddSqlServerManagement<SchemaVersion>();
            services.AddSqlServerApi();

            services.Add(provider => new SchemaInformation(SchemaVersionConstants.Min, SchemaVersionConstants.Max))
                .Singleton()
                .AsSelf()
                .AsImplementedInterfaces();

            services.Add<SqlServerSearchParameterStatusDataStore>()
                .Singleton()
                .AsSelf()
                .ReplaceService<ISearchParameterStatusDataStore>();

            services.Add<SearchParameterToSearchValueTypeMap>()
                .Singleton()
                .AsSelf();

            services.Add<SqlServerFhirDataStore>()
                .Scoped()
                .AsSelf()
                .AsImplementedInterfaces();

            services.Add<SqlServerFhirOperationDataStore>()
                .Scoped()
                .AsSelf()
                .AsImplementedInterfaces();

            services.Add<SqlServerSearchService>()
                .Scoped()
                .AsSelf()
                .AsImplementedInterfaces();

            AddSqlServerTableRowParameterGenerators(services);

            services.Add<SearchParamTableExpressionQueryGeneratorFactory>()
                .Singleton()
                .AsSelf();

            services.Add<SqlRootExpressionRewriter>()
                .Singleton()
                .AsSelf();

            services.Add<ChainFlatteningRewriter>()
                .Singleton()
                .AsSelf();

            services.Add<SortRewriter>()
                .Singleton()
                .AsSelf();

            services.Add<PartitionEliminationRewriter>()
                .Singleton()
                .AsSelf();

            services.Add<SqlServerSortingValidator>()
                .Singleton()
                .AsSelf()
                .AsImplementedInterfaces();

            services.AddFactory<IScoped<SqlConnectionWrapperFactory>>();

            services.Add<SqlServerFhirModel>()
                .Singleton()
                .AsSelf()
                .AsImplementedInterfaces();

            services.Add<SchemaUpgradedHandler>()
                .Transient()
                .AsImplementedInterfaces();

            services.Add<SqlServerSearchParameterValidator>()
                .Singleton()
                .AsSelf()
                .AsImplementedInterfaces();

            services.Add<ReindexJobSqlThrottlingController>()
                .Singleton()
                .AsImplementedInterfaces();

            services.Add<SqlServerTaskManager>()
                .Scoped()
                .AsSelf()
                .AsImplementedInterfaces();

            services.Add<SqlServerTaskConsumer>()
                .Scoped()
                .AsSelf()
                .AsImplementedInterfaces();

            services.Add<SqlServerTaskContextUpdaterFactory>()
                .Scoped()
                .AsSelf()
                .AsImplementedInterfaces();

            services.Add<SqlImportOperation>()
                .Scoped()
                .AsSelf()
                .AsImplementedInterfaces();

            services.Add<SqlResourceBulkImporter>()
                .Transient()
                .AsSelf()
                .AsImplementedInterfaces();

            services.Add<SqlResourceMetaPopulator>()
                .Transient()
                .AsSelf()
                .AsImplementedInterfaces();

            services.Add<CompressedRawResourceConverter>()
                .Transient()
                .AsSelf()
                .AsImplementedInterfaces();

            services.Add<SqlBulkCopyDataWrapperFactory>()
                .Transient()
                .AsSelf()
                .AsImplementedInterfaces();

            services.Add<DateTimeSearchParamsTableBulkCopyDataGenerator>()
                .Transient()
                .AsSelf();

            services.Add<NumberSearchParamsTableBulkCopyDataGenerator>()
                .Transient()
                .AsSelf();

            services.Add<QuantitySearchParamsTableBulkCopyDataGenerator>()
                .Transient()
                .AsSelf();

            services.Add<ReferenceSearchParamsTableBulkCopyDataGenerator>()
                .Transient()
                .AsSelf();

            services.Add<ReferenceTokenCompositeSearchParamsTableBulkCopyDataGenerator>()
                .Transient()
                .AsSelf();

            services.Add<StringSearchParamsTableBulkCopyDataGenerator>()
                .Transient()
                .AsSelf();

            services.Add<TokenDateTimeCompositeSearchParamsTableBulkCopyDataGenerator>()
                .Transient()
                .AsSelf();

            services.Add<TokenNumberNumberCompositeSearchParamsTableBulkCopyDataGenerator>()
                .Transient()
                .AsSelf();

            services.Add<TokenQuantityCompositeSearchParamsTableBulkCopyDataGenerator>()
                .Transient()
                .AsSelf();

            services.Add<TokenSearchParamsTableBulkCopyDataGenerator>()
                .Transient()
                .AsSelf();

            services.Add<TokenStringCompositeSearchParamsTableBulkCopyDataGenerator>()
                .Transient()
                .AsSelf();

            services.Add<TokenTextSearchParamsTableBulkCopyDataGenerator>()
                .Transient()
                .AsSelf();

            services.Add<TokenTokenCompositeSearchParamsTableBulkCopyDataGenerator>()
                .Transient()
                .AsSelf();

            services.Add<UriSearchParamsTableBulkCopyDataGenerator>()
                .Transient()
                .AsSelf();

            services.Add<ResourceWriteClaimTableBulkCopyDataGenerator>()
                .Transient()
                .AsSelf();

            services.Add<CompartmentAssignmentTableBulkCopyDataGenerator>()
                .Transient()
                .AsSelf();

            services.Add<SqlStoreSequenceIdGenerator>()
                .Transient()
                .AsSelf()
                .AsImplementedInterfaces();

            services.Add<PurgeOperationCapabilityProvider>()
                .Transient()
                .AsImplementedInterfaces();

            return fhirServerBuilder;
        }