/// <summary> /// Initializes a new instance of the <see cref="InstanceRepository"/> class /// </summary> /// <param name="cosmosSettings">the configuration settings for cosmos database</param> /// <param name="logger">the logger</param> /// <param name="dataRepository">the data repository to fetch data elements from</param> public InstanceRepository( IOptions <AzureCosmosSettings> cosmosSettings, ILogger <InstanceRepository> logger, IDataRepository dataRepository) { _logger = logger; _dataRepository = dataRepository; _settings = cosmosSettings.Value; CosmosDatabaseHandler database = new CosmosDatabaseHandler(cosmosSettings.Value); _client = database.CreateDatabaseAndCollection(CollectionId); _collectionUri = database.CollectionUri; Uri databaseUri = database.DatabaseUri; _databaseId = database.DatabaseName; DocumentCollection documentCollection = database.CreateDocumentCollection(CollectionId, PartitionKey); _client.CreateDocumentCollectionIfNotExistsAsync( databaseUri, documentCollection).GetAwaiter().GetResult(); _client.OpenAsync(); }
/// <summary> /// Initializes a new instance of the <see cref="InstanceRepository"/> class /// </summary> /// <param name="cosmosettings">the configuration settings for cosmos database</param> /// <param name="logger">the logger</param> public InstanceRepository(IOptions <AzureCosmosSettings> cosmosettings, ILogger <InstanceRepository> logger) { this.logger = logger; // Retrieve configuration values from appsettings.json _cosmosettings = cosmosettings.Value; ConnectionPolicy connectionPolicy = new ConnectionPolicy { ConnectionMode = ConnectionMode.Gateway, ConnectionProtocol = Protocol.Https, }; _client = new DocumentClient(new Uri(_cosmosettings.EndpointUri), _cosmosettings.PrimaryKey, connectionPolicy); _databaseUri = UriFactory.CreateDatabaseUri(_cosmosettings.Database); _collectionUri = UriFactory.CreateDocumentCollectionUri(_cosmosettings.Database, _cosmosettings.Collection); databaseId = _cosmosettings.Database; collectionId = _cosmosettings.Collection; _client.CreateDatabaseIfNotExistsAsync(new Database { Id = _cosmosettings.Database }).GetAwaiter().GetResult(); DocumentCollection documentCollection = new DocumentCollection { Id = _cosmosettings.Collection }; documentCollection.PartitionKey.Paths.Add("/instanceOwnerId"); _client.CreateDocumentCollectionIfNotExistsAsync( _databaseUri, documentCollection).GetAwaiter().GetResult(); _client.OpenAsync(); }
/// <summary> /// Initializes a new instance of the <see cref="InstanceRepository"/> class /// </summary> /// <param name="cosmosettings">the configuration settings for cosmos database</param> public ApplicationRepository(IOptions <AzureCosmosSettings> cosmosettings) { // Retrieve configuration values from appsettings.json _cosmosettings = cosmosettings.Value; databaseId = _cosmosettings.Database; ConnectionPolicy connectionPolicy = new ConnectionPolicy { ConnectionMode = ConnectionMode.Gateway, ConnectionProtocol = Protocol.Https, }; _client = new DocumentClient(new Uri(_cosmosettings.EndpointUri), _cosmosettings.PrimaryKey, connectionPolicy); _databaseUri = UriFactory.CreateDatabaseUri(_cosmosettings.Database); _collectionUri = UriFactory.CreateDocumentCollectionUri(_cosmosettings.Database, collectionId); _client.CreateDatabaseIfNotExistsAsync(new Database { Id = databaseId }).GetAwaiter().GetResult(); DocumentCollection documentCollection = new DocumentCollection { Id = collectionId }; documentCollection.PartitionKey.Paths.Add(partitionKey); _client.CreateDocumentCollectionIfNotExistsAsync( _databaseUri, documentCollection).GetAwaiter().GetResult(); _client.OpenAsync(); }
/// <summary> /// Initializes a new instance of the <see cref="DataRepository"/> class /// </summary> /// <param name="cosmosettings">the configuration settings for azure cosmos database</param> /// <param name="storageConfiguration">the storage configuration for azure blob storage</param> public DataRepository(IOptions <AzureCosmosSettings> cosmosettings, IOptions <AzureStorageConfiguration> storageConfiguration) { // Retrieve configuration values from appsettings.json _cosmosettings = cosmosettings.Value; _client = new DocumentClient(new Uri(_cosmosettings.EndpointUri), _cosmosettings.PrimaryKey); _databaseUri = UriFactory.CreateDatabaseUri(_cosmosettings.Database); _collectionUri = UriFactory.CreateDocumentCollectionUri(_cosmosettings.Database, _cosmosettings.Collection); databaseId = _cosmosettings.Database; collectionId = _cosmosettings.Collection; _client.CreateDatabaseIfNotExistsAsync(new Database { Id = _cosmosettings.Database }).GetAwaiter().GetResult(); _client.CreateDocumentCollectionIfNotExistsAsync( _databaseUri, new DocumentCollection { Id = _cosmosettings.Collection }).GetAwaiter().GetResult(); _storageConfiguration = storageConfiguration.Value; // connect to azure blob storage StorageCredentials storageCredentials = new StorageCredentials(_storageConfiguration.AccountName, _storageConfiguration.AccountKey); CloudStorageAccount storageAccount = new CloudStorageAccount(storageCredentials, true); blobClient = CreateBlobClient(storageCredentials, storageAccount); container = blobClient.GetContainerReference(_storageConfiguration.StorageContainer); }
/// <summary> /// Initializes a new instance of the <see cref="BaseRepository"/> class. /// </summary> /// <param name="collectionId">The ID of the collection.</param> /// <param name="partitionKey">The PK of the collection.</param> /// <param name="cosmosSettings">The settings object.</param> public BaseRepository(string collectionId, string partitionKey, IOptions <AzureCosmosSettings> cosmosSettings) { _collectionId = collectionId; _partitionKey = partitionKey; _cosmosSettings = cosmosSettings.Value; _databaseId = _cosmosSettings.Database; }
/// <summary> /// Initializes a new instance of the <see cref="BaseRepository"/> class. /// </summary> /// <param name="collectionId">The ID of the collection.</param> /// <param name="partitionKey">The PK of the collection.</param> /// <param name="cosmosSettings">The settings object.</param> public BaseRepository(string collectionId, string partitionKey, IOptions <AzureCosmosSettings> cosmosSettings) { _collectionId = collectionId; _partitionKey = partitionKey; _cosmosSettings = cosmosSettings.Value; DatabaseId = _cosmosSettings.Database; DatabaseUri = UriFactory.CreateDatabaseUri(DatabaseId); CollectionUri = UriFactory.CreateDocumentCollectionUri(DatabaseId, collectionId); }
public FormDataRepository(IOptions <AzureCosmosSettings> cosmosettings) { //Retrieve configuration values from appsettings.json _cosmosettings = cosmosettings.Value; _client = new DocumentClient(new Uri(_cosmosettings.EndpointUri), _cosmosettings.PrimaryKey); _databaseUri = UriFactory.CreateDatabaseUri(_cosmosettings.Database); _collectionUri = UriFactory.CreateDocumentCollectionUri(_cosmosettings.Database, _cosmosettings.Collection); databaseId = _cosmosettings.Database; collectionId = _cosmosettings.Collection; _client.CreateDatabaseIfNotExistsAsync(new Database { Id = _cosmosettings.Database }).GetAwaiter().GetResult(); _client.CreateDocumentCollectionIfNotExistsAsync(_databaseUri, new DocumentCollection { Id = _cosmosettings.Collection }).GetAwaiter().GetResult(); }
/// <summary> /// Initializes a new instance of the <see cref="PolicyInformationRepository"/> class /// </summary> /// <param name="cosmosettings">the configuration settings for cosmos database</param> /// <param name="logger">the logger</param> public PolicyInformationRepository(IOptions <AzureCosmosSettings> cosmosettings, ILogger <PolicyInformationRepository> logger) { this.logger = logger; // Retrieve configuration values from appsettings.json _cosmosettings = cosmosettings.Value; ConnectionPolicy connectionPolicy = new ConnectionPolicy { ConnectionMode = ConnectionMode.Gateway, ConnectionProtocol = Protocol.Https, }; _client = new DocumentClient(new Uri(_cosmosettings.EndpointUri), _cosmosettings.PrimaryKey, connectionPolicy); databaseId = _cosmosettings.Database; instanceCollectionId = _cosmosettings.InstanceCollection; applicationCollectionId = _cosmosettings.ApplicationCollection; _client.OpenAsync(); }
/// <summary> /// Cosmos database handler /// </summary> public CosmosDatabaseHandler(AzureCosmosSettings cosmosSettings) { this.cosmosSettings = cosmosSettings; }