/// <summary>
            /// Create database abstraction
            /// </summary>
            /// <param name="config"></param>
            /// <returns></returns>
            public static async Task <DocumentDbRepository> CreateAsync(
                ICosmosDbConfig config)
            {
                if (string.IsNullOrEmpty(config?.DbConnectionString))
                {
                    throw new ArgumentNullException(nameof(config.DbConnectionString));
                }
                var cs     = ConnectionString.Parse(config.DbConnectionString);
                var client = new DocumentClient(new Uri(cs.Endpoint),
                                                cs.SharedAccessKey);
                var databaseId = config.DatabaseId;

                if (string.IsNullOrEmpty(config.DatabaseId))
                {
                    databaseId = "default";
                }
                await client.CreateDatabaseIfNotExistsAsync(new Database {
                    Id = databaseId
                });

                return(new DocumentDbRepository {
                    DatabaseId = databaseId,
                    Client = client
                });
            }
        /// <summary>
        /// Create collection
        /// </summary>
        /// <param name="config"></param>
        /// <param name="logger"></param>
        protected CosmosDbCollection(ICosmosDbConfig config, ILogger logger)
        {
            _logger       = logger ?? throw new ArgumentNullException(nameof(logger));
            _config       = config;
            _collectionId = config?.CollectionId ?? typeof(T).Name;

            _db = DocumentDbRepository.CreateAsync(config).Result;
            CreateCollectionIfNotExistsAsync().Wait();
        }
Example #3
0
 public CosmosDb(IOptions <CosmosDbConfig> config)
 {
     if (config == null)
     {
         throw new ArgumentNullException(nameof(config));
     }
     this.config = config.Value;
     this.client = new CosmosClient(this.config.EndPointUrl, this.config.AuthorizationKey);
 }
Example #4
0
 /// <summary>
 /// Creates server
 /// </summary>
 /// <param name="config"></param>
 /// <param name="logger"></param>
 /// <param name="jsonConfig"></param>
 public CosmosDbServiceClient(ICosmosDbConfig config,
                              ILogger logger, IJsonSerializerConfig jsonConfig = null)
 {
     _config     = config ?? throw new ArgumentNullException(nameof(config));
     _logger     = logger ?? throw new ArgumentNullException(nameof(logger));
     _jsonConfig = jsonConfig;
     if (string.IsNullOrEmpty(_config?.DbConnectionString))
     {
         throw new ArgumentNullException(nameof(_config.DbConnectionString));
     }
 }
Example #5
0
 /// <summary>
 /// Create provider
 /// </summary>
 /// <param name="config"></param>
 /// <param name="logger"></param>
 public CosmosDbAuditLogWriter(ICosmosDbConfig config, ILogger logger) :
     base(config, logger)
 {
 }