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); }