public SqlServerSearchService( ISearchOptionsFactory searchOptionsFactory, IFhirDataStore fhirDataStore, SqlServerFhirModel model, SqlRootExpressionRewriter sqlRootExpressionRewriter, ChainFlatteningRewriter chainFlatteningRewriter, StringOverflowRewriter stringOverflowRewriter, SqlConnectionWrapperFactory sqlConnectionWrapperFactory, ILogger <SqlServerSearchService> logger) : base(searchOptionsFactory, fhirDataStore) { EnsureArg.IsNotNull(sqlRootExpressionRewriter, nameof(sqlRootExpressionRewriter)); EnsureArg.IsNotNull(chainFlatteningRewriter, nameof(chainFlatteningRewriter)); EnsureArg.IsNotNull(stringOverflowRewriter, nameof(stringOverflowRewriter)); EnsureArg.IsNotNull(sqlConnectionWrapperFactory, nameof(sqlConnectionWrapperFactory)); EnsureArg.IsNotNull(logger, nameof(logger)); _model = model; _sqlRootExpressionRewriter = sqlRootExpressionRewriter; _chainFlatteningRewriter = chainFlatteningRewriter; _stringOverflowRewriter = stringOverflowRewriter; _sqlConnectionWrapperFactory = sqlConnectionWrapperFactory; _logger = logger; _isResultPartial = false; }
public SqlServerSearchService( ISearchOptionsFactory searchOptionsFactory, IFhirDataStore fhirDataStore, SqlServerFhirModel model, SqlRootExpressionRewriter sqlRootExpressionRewriter, ChainFlatteningRewriter chainFlatteningRewriter, SortRewriter sortRewriter, SqlConnectionWrapperFactory sqlConnectionWrapperFactory, SchemaInformation schemaInformation, ISortingValidator sortingValidator, IFhirRequestContextAccessor requestContextAccessor, ILogger <SqlServerSearchService> logger) : base(searchOptionsFactory, fhirDataStore) { EnsureArg.IsNotNull(sqlRootExpressionRewriter, nameof(sqlRootExpressionRewriter)); EnsureArg.IsNotNull(chainFlatteningRewriter, nameof(chainFlatteningRewriter)); EnsureArg.IsNotNull(sqlConnectionWrapperFactory, nameof(sqlConnectionWrapperFactory)); EnsureArg.IsNotNull(schemaInformation, nameof(schemaInformation)); EnsureArg.IsNotNull(sortingValidator, nameof(sortingValidator)); EnsureArg.IsNotNull(requestContextAccessor, nameof(requestContextAccessor)); EnsureArg.IsNotNull(logger, nameof(logger)); _model = model; _sqlRootExpressionRewriter = sqlRootExpressionRewriter; _sortRewriter = sortRewriter; _chainFlatteningRewriter = chainFlatteningRewriter; _sqlConnectionWrapperFactory = sqlConnectionWrapperFactory; _logger = logger; _schemaInformation = schemaInformation; _sortingValidator = sortingValidator; _requestContextAccessor = requestContextAccessor; }
public SqlServerFhirStorageTestHelper(string connectionString, string initialConnectionString, string masterConnectionString, SqlServerFhirModel sqlServerFhirModel) { _connectionString = connectionString; _initialConnectionString = initialConnectionString; _masterConnectionString = masterConnectionString; _sqlServerFhirModel = sqlServerFhirModel; }
public SqlServerSearchService( ISearchOptionsFactory searchOptionsFactory, IFhirDataStore fhirDataStore, SqlServerFhirModel model, SqlRootExpressionRewriter sqlRootExpressionRewriter, ChainFlatteningRewriter chainFlatteningRewriter, StringOverflowRewriter stringOverflowRewriter, SortRewriter sortRewriter, SqlConnectionWrapperFactory sqlConnectionWrapperFactory, ILogger <SqlServerSearchService> logger, SchemaInformation schemaInformation) : base(searchOptionsFactory, fhirDataStore) { EnsureArg.IsNotNull(sqlRootExpressionRewriter, nameof(sqlRootExpressionRewriter)); EnsureArg.IsNotNull(chainFlatteningRewriter, nameof(chainFlatteningRewriter)); EnsureArg.IsNotNull(stringOverflowRewriter, nameof(stringOverflowRewriter)); EnsureArg.IsNotNull(sqlConnectionWrapperFactory, nameof(sqlConnectionWrapperFactory)); EnsureArg.IsNotNull(logger, nameof(logger)); EnsureArg.IsNotNull(schemaInformation, nameof(schemaInformation)); _model = model; _sqlRootExpressionRewriter = sqlRootExpressionRewriter; _sortRewriter = sortRewriter; _chainFlatteningRewriter = chainFlatteningRewriter; _stringOverflowRewriter = stringOverflowRewriter; _sqlConnectionWrapperFactory = sqlConnectionWrapperFactory; _logger = logger; _isResultPartial = false; // Initialise supported sort params with SQL related values SearchParameterInfoExtensions.AppendSearchParameterInfoExtensions(SupportedSortParameterNames.Names); _schemaInformation = schemaInformation; }
public SqlBulkCopyDataWrapperFactory(SqlServerFhirModel model, SearchParameterToSearchValueTypeMap searchParameterTypeMap) { EnsureArg.IsNotNull(model, nameof(model)); EnsureArg.IsNotNull(searchParameterTypeMap, nameof(searchParameterTypeMap)); _model = model; _searchParameterTypeMap = searchParameterTypeMap; }
public BulkCompartmentAssignmentV1RowGenerator(SqlServerFhirModel model, SearchParameterToSearchValueTypeMap searchParameterTypeMap) { EnsureArg.IsNotNull(model, nameof(model)); EnsureArg.IsNotNull(searchParameterTypeMap, nameof(searchParameterTypeMap)); _model = model; _searchParameterTypeMap = searchParameterTypeMap; }
public BulkResourceWriteClaimV1RowGenerator(SqlServerFhirModel model, SearchParameterToSearchValueTypeMap searchParameterTypeMap) { EnsureArg.IsNotNull(model, nameof(model)); EnsureArg.IsNotNull(searchParameterTypeMap, nameof(searchParameterTypeMap)); _model = model; _searchParameterTypeMap = searchParameterTypeMap; }
public SqlServerFhirStorageTestsFixture() { var initialConnectionString = Environment.GetEnvironmentVariable("SqlServer:ConnectionString") ?? LocalConnectionString; _databaseName = $"FHIRINTEGRATIONTEST_{DateTimeOffset.UtcNow.ToUnixTimeSeconds()}_{BigInteger.Abs(new BigInteger(Guid.NewGuid().ToByteArray()))}"; _masterConnectionString = new SqlConnectionStringBuilder(initialConnectionString) { InitialCatalog = "master" }.ToString(); TestConnectionString = new SqlConnectionStringBuilder(initialConnectionString) { InitialCatalog = _databaseName }.ToString(); var config = new SqlServerDataStoreConfiguration { ConnectionString = TestConnectionString, Initialize = true }; var schemaUpgradeRunner = new SchemaUpgradeRunner(config, NullLogger <SchemaUpgradeRunner> .Instance); var schemaInformation = new SchemaInformation(); _schemaInitializer = new SchemaInitializer(config, schemaUpgradeRunner, schemaInformation, NullLogger <SchemaInitializer> .Instance); var searchParameterDefinitionManager = Substitute.For <ISearchParameterDefinitionManager>(); searchParameterDefinitionManager.AllSearchParameters.Returns(new[] { new SearchParameter { Name = SearchParameterNames.Id, Type = SearchParamType.Token, Url = SearchParameterNames.IdUri.ToString() }.ToInfo(), new SearchParameter { Name = SearchParameterNames.LastUpdated, Type = SearchParamType.Date, Url = SearchParameterNames.LastUpdatedUri.ToString() }.ToInfo(), }); var securityConfiguration = new SecurityConfiguration { PrincipalClaims = { "oid" } }; var sqlServerFhirModel = new SqlServerFhirModel(config, schemaInformation, searchParameterDefinitionManager, Options.Create(securityConfiguration), NullLogger <SqlServerFhirModel> .Instance); var serviceCollection = new ServiceCollection(); serviceCollection.AddSqlServerTableRowParameterGenerators(); serviceCollection.AddSingleton(sqlServerFhirModel); ServiceProvider serviceProvider = serviceCollection.BuildServiceProvider(); var upsertResourceTvpGenerator = serviceProvider.GetRequiredService <V1.UpsertResourceTvpGenerator <ResourceMetadata> >(); var searchParameterToSearchValueTypeMap = new SearchParameterToSearchValueTypeMap(searchParameterDefinitionManager); SqlTransactionHandler = new SqlTransactionHandler(); SqlConnectionWrapperFactory = new SqlConnectionWrapperFactory(config, SqlTransactionHandler); _fhirDataStore = new SqlServerFhirDataStore(config, sqlServerFhirModel, searchParameterToSearchValueTypeMap, upsertResourceTvpGenerator, Options.Create(new CoreFeatureConfiguration()), SqlConnectionWrapperFactory, NullLogger <SqlServerFhirDataStore> .Instance); _testHelper = new SqlServerFhirStorageTestHelper(TestConnectionString); }
public SqlServerFhirStorageTestHelper(string initialConnectionString, string masterDatabaseName, SqlServerFhirModel sqlServerFhirModel, ISqlConnectionFactory sqlConnectionFactory) { EnsureArg.IsNotNull(sqlConnectionFactory, nameof(sqlConnectionFactory)); _masterDatabaseName = masterDatabaseName; _initialConnectionString = initialConnectionString; _sqlServerFhirModel = sqlServerFhirModel; _sqlConnectionFactory = sqlConnectionFactory; }
protected BulkSearchParameterRowGenerator(SqlServerFhirModel model, SearchParameterToSearchValueTypeMap searchParameterTypeMap) { EnsureArg.IsNotNull(model, nameof(model)); EnsureArg.IsNotNull(searchParameterTypeMap, nameof(searchParameterTypeMap)); Model = model; _searchParameterTypeMap = searchParameterTypeMap; _isConvertSearchValueOverridden = GetType().GetMethod(nameof(ConvertSearchValue), BindingFlags.Instance | BindingFlags.NonPublic).DeclaringType != typeof(SearchParameterRowGenerator <TSearchValue, TRow>); }
public SqlQueryGenerator(IndentedStringBuilder sb, SqlQueryParameterManager parameters, SqlServerFhirModel model, bool isHistorySearch) { EnsureArg.IsNotNull(sb, nameof(sb)); EnsureArg.IsNotNull(parameters, nameof(parameters)); EnsureArg.IsNotNull(model, nameof(model)); StringBuilder = sb; Parameters = parameters; Model = model; _isHistorySearch = isHistorySearch; }
internal SearchParameterQueryGeneratorContext(IndentedStringBuilder stringBuilder, SqlQueryParameterManager parameters, SqlServerFhirModel model, string tableAlias = null) { EnsureArg.IsNotNull(stringBuilder, nameof(stringBuilder)); EnsureArg.IsNotNull(parameters, nameof(parameters)); EnsureArg.IsNotNull(model, nameof(model)); StringBuilder = stringBuilder; Parameters = parameters; Model = model; TableAlias = tableAlias; }
public SqlServerFhirStorageTestHelper( string initialConnectionString, string masterDatabaseName, SearchParameterDefinitionManager searchParameterDefinitionManager, SqlServerFhirModel sqlServerFhirModel, ISqlConnectionFactory sqlConnectionFactory) { EnsureArg.IsNotNull(searchParameterDefinitionManager, nameof(searchParameterDefinitionManager)); EnsureArg.IsNotNull(sqlServerFhirModel, nameof(sqlServerFhirModel)); EnsureArg.IsNotNull(sqlConnectionFactory, nameof(sqlConnectionFactory)); _masterDatabaseName = masterDatabaseName; _initialConnectionString = initialConnectionString; _searchParameterDefinitionManager = searchParameterDefinitionManager; _sqlServerFhirModel = sqlServerFhirModel; _sqlConnectionFactory = sqlConnectionFactory; }
public SqlServerSearchParameterStatusDataStore( Func <IScoped <SqlConnectionWrapperFactory> > scopedSqlConnectionWrapperFactory, VLatest.UpsertSearchParamsTvpGenerator <List <ResourceSearchParameterStatus> > updateSearchParamsTvpGenerator, FilebasedSearchParameterStatusDataStore.Resolver filebasedRegistry, SchemaInformation schemaInformation, SqlServerFhirModel fhirModel) { EnsureArg.IsNotNull(scopedSqlConnectionWrapperFactory, nameof(scopedSqlConnectionWrapperFactory)); EnsureArg.IsNotNull(updateSearchParamsTvpGenerator, nameof(updateSearchParamsTvpGenerator)); EnsureArg.IsNotNull(filebasedRegistry, nameof(filebasedRegistry)); EnsureArg.IsNotNull(schemaInformation, nameof(schemaInformation)); EnsureArg.IsNotNull(fhirModel, nameof(fhirModel)); _scopedSqlConnectionWrapperFactory = scopedSqlConnectionWrapperFactory; _updateSearchParamsTvpGenerator = updateSearchParamsTvpGenerator; _filebasedSearchParameterStatusDataStore = filebasedRegistry.Invoke(); _schemaInformation = schemaInformation; _fhirModel = fhirModel; }
public SqlServerFhirStorageTestHelper( string initialConnectionString, string masterDatabaseName, SqlServerFhirModel sqlServerFhirModel, ISqlConnectionFactory sqlConnectionFactory) { EnsureArg.IsNotNull(sqlServerFhirModel, nameof(sqlServerFhirModel)); EnsureArg.IsNotNull(sqlConnectionFactory, nameof(sqlConnectionFactory)); _masterDatabaseName = masterDatabaseName; _initialConnectionString = initialConnectionString; _sqlServerFhirModel = sqlServerFhirModel; _sqlConnectionFactory = sqlConnectionFactory; _dbSetupRetryPolicy = Policy .Handle <SqlException>() .WaitAndRetryAsync( retryCount: 7, sleepDurationProvider: retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt))); }
public SqlServerSearchService( ISearchOptionsFactory searchOptionsFactory, IFhirDataStore fhirDataStore, IModelInfoProvider modelInfoProvider, SqlServerFhirModel model, SqlRootExpressionRewriter sqlRootExpressionRewriter, ChainFlatteningRewriter chainFlatteningRewriter, SqlServerDataStoreConfiguration configuration, ILogger <SqlServerSearchService> logger) : base(searchOptionsFactory, fhirDataStore, modelInfoProvider) { EnsureArg.IsNotNull(sqlRootExpressionRewriter, nameof(sqlRootExpressionRewriter)); EnsureArg.IsNotNull(chainFlatteningRewriter, nameof(chainFlatteningRewriter)); EnsureArg.IsNotNull(logger, nameof(logger)); _model = model; _sqlRootExpressionRewriter = sqlRootExpressionRewriter; _chainFlatteningRewriter = chainFlatteningRewriter; _configuration = configuration; _logger = logger; }
public DateTimeSearchParameterRowGenerator(SqlServerFhirModel model) : base(model) { }
public BulkUriSearchParameterV1RowGenerator(SqlServerFhirModel model, SearchParameterToSearchValueTypeMap searchParameterTypeMap) : base(model, searchParameterTypeMap) { }
public SqlServerFhirStorageTestsFixture() { var initialConnectionString = Environment.GetEnvironmentVariable("SqlServer:ConnectionString") ?? LocalConnectionString; _databaseName = $"FHIRINTEGRATIONTEST_{DateTimeOffset.UtcNow.ToUnixTimeSeconds()}_{BigInteger.Abs(new BigInteger(Guid.NewGuid().ToByteArray()))}"; TestConnectionString = new SqlConnectionStringBuilder(initialConnectionString) { InitialCatalog = _databaseName }.ToString(); var schemaOptions = new SqlServerSchemaOptions { AutomaticUpdatesEnabled = true }; var config = new SqlServerDataStoreConfiguration { ConnectionString = TestConnectionString, Initialize = true, SchemaOptions = schemaOptions }; var schemaInformation = new SchemaInformation(SchemaVersionConstants.Min, SchemaVersionConstants.Max); var scriptProvider = new ScriptProvider <SchemaVersion>(); var baseScriptProvider = new BaseScriptProvider(); var mediator = Substitute.For <IMediator>(); var sqlConnectionFactory = new DefaultSqlConnectionFactory(config); var schemaUpgradeRunner = new SchemaUpgradeRunner(scriptProvider, baseScriptProvider, mediator, NullLogger <SchemaUpgradeRunner> .Instance, sqlConnectionFactory); _schemaInitializer = new SchemaInitializer(config, schemaUpgradeRunner, schemaInformation, sqlConnectionFactory, NullLogger <SchemaInitializer> .Instance); var searchParameterDefinitionManager = new SearchParameterDefinitionManager(ModelInfoProvider.Instance); _filebasedSearchParameterStatusDataStore = new FilebasedSearchParameterStatusDataStore(searchParameterDefinitionManager, ModelInfoProvider.Instance); var securityConfiguration = new SecurityConfiguration { PrincipalClaims = { "oid" } }; var sqlServerFhirModel = new SqlServerFhirModel( config, schemaInformation, searchParameterDefinitionManager, () => _filebasedSearchParameterStatusDataStore, Options.Create(securityConfiguration), NullLogger <SqlServerFhirModel> .Instance); var serviceCollection = new ServiceCollection(); serviceCollection.AddSqlServerTableRowParameterGenerators(); serviceCollection.AddSingleton(sqlServerFhirModel); ServiceProvider serviceProvider = serviceCollection.BuildServiceProvider(); var upsertResourceTvpGenerator = serviceProvider.GetRequiredService <VLatest.UpsertResourceTvpGenerator <ResourceMetadata> >(); var upsertSearchParamsTvpGenerator = serviceProvider.GetRequiredService <VLatest.UpsertSearchParamsTvpGenerator <List <ResourceSearchParameterStatus> > >(); var searchParameterToSearchValueTypeMap = new SearchParameterToSearchValueTypeMap(new SupportedSearchParameterDefinitionManager(searchParameterDefinitionManager)); SqlTransactionHandler = new SqlTransactionHandler(); SqlConnectionWrapperFactory = new SqlConnectionWrapperFactory(SqlTransactionHandler, new SqlCommandWrapperFactory(), sqlConnectionFactory); SqlServerSearchParameterStatusDataStore = new SqlServerSearchParameterStatusDataStore( () => SqlConnectionWrapperFactory.CreateMockScope(), upsertSearchParamsTvpGenerator, () => _filebasedSearchParameterStatusDataStore, schemaInformation); _fhirDataStore = new SqlServerFhirDataStore(config, sqlServerFhirModel, searchParameterToSearchValueTypeMap, upsertResourceTvpGenerator, Options.Create(new CoreFeatureConfiguration()), SqlConnectionWrapperFactory, NullLogger <SqlServerFhirDataStore> .Instance, schemaInformation); _fhirOperationDataStore = new SqlServerFhirOperationDataStore(SqlConnectionWrapperFactory, NullLogger <SqlServerFhirOperationDataStore> .Instance); _testHelper = new SqlServerFhirStorageTestHelper(initialConnectionString, MasterDatabaseName, searchParameterDefinitionManager, sqlServerFhirModel, sqlConnectionFactory); }
public QuantitySearchParameterRowGenerator(SqlServerFhirModel model) : base(model) { }
private async Task <(SqlServerFhirStorageTestHelper testHelper, SchemaUpgradeRunner upgradeRunner)> SetupTestHelperAndCreateDatabase(string databaseName, int maxSchemaVersion, bool forceIncrementalSchemaUpgrade) { var initialConnectionString = Environment.GetEnvironmentVariable("SqlServer:ConnectionString") ?? LocalConnectionString; var searchService = Substitute.For <ISearchService>(); ISearchParameterDefinitionManager defManager = new SearchParameterDefinitionManager(ModelInfoProvider.Instance, Substitute.For <IMediator>(), () => searchService.CreateMockScope(), NullLogger <SearchParameterDefinitionManager> .Instance); FilebasedSearchParameterStatusDataStore statusStore = new FilebasedSearchParameterStatusDataStore(defManager, ModelInfoProvider.Instance); var schemaInformation = new SchemaInformation(SchemaVersionConstants.Min, maxSchemaVersion); var connectionString = new SqlConnectionStringBuilder(initialConnectionString) { InitialCatalog = databaseName }.ToString(); var schemaOptions = new SqlServerSchemaOptions { AutomaticUpdatesEnabled = true }; var config = new SqlServerDataStoreConfiguration { ConnectionString = connectionString, Initialize = true, SchemaOptions = schemaOptions }; var sqlConnectionStringProvider = new DefaultSqlConnectionStringProvider(config); var securityConfiguration = new SecurityConfiguration { PrincipalClaims = { "oid" } }; SqlServerFhirModel sqlServerFhirModel = new SqlServerFhirModel( schemaInformation, defManager, () => statusStore, Options.Create(securityConfiguration), sqlConnectionStringProvider, Substitute.For <IMediator>(), NullLogger <SqlServerFhirModel> .Instance); var sqlConnectionFactory = new DefaultSqlConnectionFactory(sqlConnectionStringProvider); var testHelper = new SqlServerFhirStorageTestHelper( initialConnectionString, MasterDatabaseName, sqlServerFhirModel, sqlConnectionFactory); var scriptProvider = new ScriptProvider <SchemaVersion>(); var baseScriptProvider = new BaseScriptProvider(); var mediator = Substitute.For <IMediator>(); var schemaManagerDataStore = new SchemaManagerDataStore(sqlConnectionFactory); var schemaUpgradeRunner = new SchemaUpgradeRunner( scriptProvider, baseScriptProvider, NullLogger <SchemaUpgradeRunner> .Instance, sqlConnectionFactory, schemaManagerDataStore); var schemaInitializer = new SchemaInitializer( config, schemaUpgradeRunner, schemaInformation, sqlConnectionFactory, sqlConnectionStringProvider, mediator, NullLogger <SchemaInitializer> .Instance); await testHelper.CreateAndInitializeDatabase( databaseName, maxSchemaVersion, forceIncrementalSchemaUpgrade, schemaInitializer); return(testHelper, schemaUpgradeRunner); }
public TokenTextSearchParameterV1RowGenerator(SqlServerFhirModel model) : base(model) { }
internal SqlServerFhirStorageTestsFixture(int maximumSupportedSchemaVersion, string databaseName, IOptions <CoreFeatureConfiguration> coreFeatures = null) { var initialConnectionString = Environment.GetEnvironmentVariable("SqlServer:ConnectionString") ?? LocalConnectionString; _maximumSupportedSchemaVersion = maximumSupportedSchemaVersion; _databaseName = databaseName; TestConnectionString = new SqlConnectionStringBuilder(initialConnectionString) { InitialCatalog = _databaseName }.ToString(); var schemaOptions = new SqlServerSchemaOptions { AutomaticUpdatesEnabled = true }; var config = Options.Create(new SqlServerDataStoreConfiguration { ConnectionString = TestConnectionString, Initialize = true, SchemaOptions = schemaOptions, StatementTimeout = TimeSpan.FromMinutes(10) }); SchemaInformation = new SchemaInformation(SchemaVersionConstants.Min, maximumSupportedSchemaVersion); var scriptProvider = new ScriptProvider <SchemaVersion>(); var baseScriptProvider = new BaseScriptProvider(); var mediator = Substitute.For <IMediator>(); var sqlSortingValidator = new SqlServerSortingValidator(SchemaInformation); var sqlConnectionStringProvider = new DefaultSqlConnectionStringProvider(config); SqlConnectionFactory = new DefaultSqlConnectionFactory(sqlConnectionStringProvider); var schemaManagerDataStore = new SchemaManagerDataStore(SqlConnectionFactory, config, NullLogger <SchemaManagerDataStore> .Instance); _schemaUpgradeRunner = new SchemaUpgradeRunner(scriptProvider, baseScriptProvider, NullLogger <SchemaUpgradeRunner> .Instance, SqlConnectionFactory, schemaManagerDataStore); _schemaInitializer = new SchemaInitializer(config, schemaManagerDataStore, _schemaUpgradeRunner, SchemaInformation, SqlConnectionFactory, sqlConnectionStringProvider, mediator, NullLogger <SchemaInitializer> .Instance); _searchParameterDefinitionManager = new SearchParameterDefinitionManager(ModelInfoProvider.Instance, _mediator, () => _searchService.CreateMockScope(), NullLogger <SearchParameterDefinitionManager> .Instance); _searchParameterDefinitionManager.StartAsync(CancellationToken.None); _filebasedSearchParameterStatusDataStore = new FilebasedSearchParameterStatusDataStore(_searchParameterDefinitionManager, ModelInfoProvider.Instance); var securityConfiguration = new SecurityConfiguration { PrincipalClaims = { "oid" } }; var sqlServerFhirModel = new SqlServerFhirModel( SchemaInformation, _searchParameterDefinitionManager, () => _filebasedSearchParameterStatusDataStore, Options.Create(securityConfiguration), SqlConnectionFactory, Substitute.For <IMediator>(), NullLogger <SqlServerFhirModel> .Instance); SqlServerFhirModel = sqlServerFhirModel; var searchParameterToSearchValueTypeMap = new SearchParameterToSearchValueTypeMap(); var serviceCollection = new ServiceCollection(); serviceCollection.AddSqlServerTableRowParameterGenerators(); serviceCollection.AddSingleton(sqlServerFhirModel); serviceCollection.AddSingleton <ISqlServerFhirModel>(sqlServerFhirModel); serviceCollection.AddSingleton(searchParameterToSearchValueTypeMap); ServiceProvider serviceProvider = serviceCollection.BuildServiceProvider(); var upsertResourceTvpGeneratorV6 = serviceProvider.GetRequiredService <V6.UpsertResourceTvpGenerator <ResourceMetadata> >(); var upsertResourceTvpGeneratorV7 = serviceProvider.GetRequiredService <V7.UpsertResourceTvpGenerator <ResourceMetadata> >(); var upsertResourceTvpGeneratorV13 = serviceProvider.GetRequiredService <V13.UpsertResourceTvpGenerator <IReadOnlyList <ResourceWrapper> > >(); var upsertResourceTvpGeneratorV17 = serviceProvider.GetRequiredService <V17.UpsertResourceTvpGenerator <IReadOnlyList <ResourceWrapper> > >(); var upsertResourceTvpGeneratorVLatest = serviceProvider.GetRequiredService <VLatest.UpsertResourceTvpGenerator <IReadOnlyList <ResourceWrapper> > >(); var reindexResourceTvpGeneratorV17 = serviceProvider.GetRequiredService <V17.ReindexResourceTvpGenerator <IReadOnlyList <ResourceWrapper> > >(); var bulkReindexResourceTvpGeneratorV17 = serviceProvider.GetRequiredService <V17.BulkReindexResourcesTvpGenerator <IReadOnlyList <ResourceWrapper> > >(); var reindexResourceTvpGeneratorVLatest = serviceProvider.GetRequiredService <VLatest.ReindexResourceTvpGenerator <IReadOnlyList <ResourceWrapper> > >(); var bulkReindexResourceTvpGeneratorVLatest = serviceProvider.GetRequiredService <VLatest.BulkReindexResourcesTvpGenerator <IReadOnlyList <ResourceWrapper> > >(); var upsertSearchParamsTvpGenerator = serviceProvider.GetRequiredService <VLatest.UpsertSearchParamsTvpGenerator <List <ResourceSearchParameterStatus> > >(); _supportedSearchParameterDefinitionManager = new SupportedSearchParameterDefinitionManager(_searchParameterDefinitionManager); SqlTransactionHandler = new SqlTransactionHandler(); SqlConnectionWrapperFactory = new SqlConnectionWrapperFactory(SqlTransactionHandler, new SqlCommandWrapperFactory(), SqlConnectionFactory); SqlServerSearchParameterStatusDataStore = new SqlServerSearchParameterStatusDataStore( () => SqlConnectionWrapperFactory.CreateMockScope(), upsertSearchParamsTvpGenerator, () => _filebasedSearchParameterStatusDataStore, SchemaInformation, sqlSortingValidator, sqlServerFhirModel, _searchParameterDefinitionManager); IOptions <CoreFeatureConfiguration> options = coreFeatures ?? Options.Create(new CoreFeatureConfiguration()); _fhirDataStore = new SqlServerFhirDataStore( sqlServerFhirModel, searchParameterToSearchValueTypeMap, upsertResourceTvpGeneratorV6, upsertResourceTvpGeneratorV7, upsertResourceTvpGeneratorV13, upsertResourceTvpGeneratorV17, upsertResourceTvpGeneratorVLatest, reindexResourceTvpGeneratorV17, reindexResourceTvpGeneratorVLatest, bulkReindexResourceTvpGeneratorV17, bulkReindexResourceTvpGeneratorVLatest, options, SqlConnectionWrapperFactory, new CompressedRawResourceConverter(), NullLogger <SqlServerFhirDataStore> .Instance, SchemaInformation); _fhirOperationDataStore = new SqlServerFhirOperationDataStore(SqlConnectionWrapperFactory, NullLogger <SqlServerFhirOperationDataStore> .Instance); _fhirRequestContextAccessor.RequestContext.CorrelationId.Returns(Guid.NewGuid().ToString()); _fhirRequestContextAccessor.RequestContext.RouteName.Returns("routeName"); var searchableSearchParameterDefinitionManager = new SearchableSearchParameterDefinitionManager(_searchParameterDefinitionManager, _fhirRequestContextAccessor); var searchParameterExpressionParser = new SearchParameterExpressionParser(new ReferenceSearchValueParser(_fhirRequestContextAccessor)); var expressionParser = new ExpressionParser(() => searchableSearchParameterDefinitionManager, searchParameterExpressionParser); var searchOptionsFactory = new SearchOptionsFactory( expressionParser, () => searchableSearchParameterDefinitionManager, options, _fhirRequestContextAccessor, sqlSortingValidator, NullLogger <SearchOptionsFactory> .Instance); var searchParamTableExpressionQueryGeneratorFactory = new SearchParamTableExpressionQueryGeneratorFactory(searchParameterToSearchValueTypeMap); var sqlRootExpressionRewriter = new SqlRootExpressionRewriter(searchParamTableExpressionQueryGeneratorFactory); var chainFlatteningRewriter = new ChainFlatteningRewriter(searchParamTableExpressionQueryGeneratorFactory); var sortRewriter = new SortRewriter(searchParamTableExpressionQueryGeneratorFactory); var partitionEliminationRewriter = new PartitionEliminationRewriter(sqlServerFhirModel, SchemaInformation, () => searchableSearchParameterDefinitionManager); _searchService = new SqlServerSearchService( searchOptionsFactory, _fhirDataStore, sqlServerFhirModel, sqlRootExpressionRewriter, chainFlatteningRewriter, sortRewriter, partitionEliminationRewriter, SqlConnectionWrapperFactory, SchemaInformation, _fhirRequestContextAccessor, new CompressedRawResourceConverter(), NullLogger <SqlServerSearchService> .Instance); ISearchParameterSupportResolver searchParameterSupportResolver = Substitute.For <ISearchParameterSupportResolver>(); searchParameterSupportResolver.IsSearchParameterSupported(Arg.Any <SearchParameterInfo>()).Returns((true, false)); _searchParameterStatusManager = new SearchParameterStatusManager( SqlServerSearchParameterStatusDataStore, _searchParameterDefinitionManager, searchParameterSupportResolver, mediator, NullLogger <SearchParameterStatusManager> .Instance); _testHelper = new SqlServerFhirStorageTestHelper(initialConnectionString, MasterDatabaseName, sqlServerFhirModel, SqlConnectionFactory); }
public ReferenceSearchParameterRowGenerator(SqlServerFhirModel model) : base(model) { }
protected CompositeSearchParameterRowGenerator(SqlServerFhirModel model) : base(model) { }
public StringSearchParameterRowGenerator(SqlServerFhirModel model) : base(model) { }
public ResourceWriteClaimV1RowGenerator(SqlServerFhirModel model) { EnsureArg.IsNotNull(model, nameof(model)); _model = model; }
public NumberSearchParameterRowGenerator(SqlServerFhirModel model) : base(model) { }
public CompartmentAssignmentRowGenerator(SqlServerFhirModel model) { EnsureArg.IsNotNull(model, nameof(model)); _model = model; }
public SqlServerFhirStorageTestsFixture() { var initialConnectionString = Environment.GetEnvironmentVariable("SqlServer:ConnectionString") ?? LocalDatabase.DefaultConnectionString; _databaseName = $"FHIRINTEGRATIONTEST_{DateTimeOffset.UtcNow.ToUnixTimeSeconds()}_{BigInteger.Abs(new BigInteger(Guid.NewGuid().ToByteArray()))}"; _masterConnectionString = new SqlConnectionStringBuilder(initialConnectionString) { InitialCatalog = "master" }.ToString(); TestConnectionString = new SqlConnectionStringBuilder(initialConnectionString) { InitialCatalog = _databaseName }.ToString(); using (var connection = new SqlConnection(_masterConnectionString)) { connection.Open(); using (SqlCommand command = connection.CreateCommand()) { command.CommandTimeout = 600; command.CommandText = $"CREATE DATABASE {_databaseName}"; command.ExecuteNonQuery(); } } var config = new SqlServerDataStoreConfiguration { ConnectionString = TestConnectionString, Initialize = true }; var schemaUpgradeRunner = new SchemaUpgradeRunner(config); var schemaInformation = new SchemaInformation(); var schemaInitializer = new SchemaInitializer(config, schemaUpgradeRunner, schemaInformation, NullLogger <SchemaInitializer> .Instance); schemaInitializer.Start(); var searchParameterDefinitionManager = Substitute.For <ISearchParameterDefinitionManager>(); searchParameterDefinitionManager.AllSearchParameters.Returns(new[] { new SearchParameter { Id = SearchParameterNames.Id, Url = SearchParameterNames.IdUri.ToString() }, new SearchParameter { Id = SearchParameterNames.LastUpdated, Url = SearchParameterNames.LastUpdatedUri.ToString() }, }); var securityConfiguration = new SecurityConfiguration { PrincipalClaims = { "oid" } }; var sqlServerFhirModel = new SqlServerFhirModel(config, schemaInformation, searchParameterDefinitionManager, Options.Create(securityConfiguration), NullLogger <SqlServerFhirModel> .Instance); var serviceCollection = new ServiceCollection(); serviceCollection.AddSqlServerTableRowParameterGenerators(); serviceCollection.AddSingleton(sqlServerFhirModel); ServiceProvider serviceProvider = serviceCollection.BuildServiceProvider(); var upsertResourceTvpGenerator = serviceProvider.GetRequiredService <V1.UpsertResourceTvpGenerator <ResourceMetadata> >(); var searchParameterToSearchValueTypeMap = new SearchParameterToSearchValueTypeMap(searchParameterDefinitionManager); _fhirDataStore = new SqlServerFhirDataStore(config, sqlServerFhirModel, searchParameterToSearchValueTypeMap, upsertResourceTvpGenerator, NullLogger <SqlServerFhirDataStore> .Instance); _testHelper = new SqlServerFhirStorageTestHelper(TestConnectionString); }