Esempio n. 1
0
        /// <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();
        }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
 /// <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;
 }
Esempio n. 6
0
        /// <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);
        }
Esempio n. 7
0
 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;
 }