Beispiel #1
0
        public async Task <string> CreateDatabase()
        {
            string databaseId = string.Empty;
            Dictionary <string, string> properties = new Dictionary <string, string>();

            OpenList         = cacheManager.Get <string>(DatabaseType.Open.GetEnumDescription()).Result;
            UsedList         = cacheManager.Get <string>(DatabaseType.Used.GetEnumDescription()).Result;
            BeingCreatedList = cacheManager.Get <string>(DatabaseType.BeingCreated.GetEnumDescription()).Result;

            if (TotalAvailableDatabase > 0)
            {
                CommonFunctions.LogMetrics($"Returning from cache");
                databaseId = OpenList.FirstOrDefault();
                Remove(databaseId, DatabaseType.Open);
            }
            else if (TotalAvailableDatabase + TotalUsedDatabase >= ServiceConfigSettings.MaximumDatabases)
            {
                CommonFunctions.LogMetrics($"Max count of databases reached");
                throw new Exception("Please wait as the system has reached maximum number of databases");
            }
            else
            {
                CommonFunctions.LogMetrics($"Creating physical database");
                string dbID = "the-goods-mobile-" + Guid.NewGuid().ToString();
                Add(databaseId, DatabaseType.BeingCreated);
                databaseId = dbOperations.CreateDatabase(dbID).Result;
                Remove(databaseId, DatabaseType.BeingCreated);
            }

            Add(databaseId, DatabaseType.Used);
            return(databaseId);
        }