public async Task <IActionResult> Get(string key) { // Get the version stamp of the entity string entityTag = string.Empty; if (Request.Headers.ContainsKey("If-None-Match")) { entityTag = Request.Headers["If-None-Match"].First(); } var cosmosCollection = new CosmosCollection <Auction>("AuctionsCollection"); var resultantSet = await cosmosCollection.GetItemsAsync(item => item.Id == key); var auction = resultantSet.FirstOrDefault(); if (auction == null) { return(NotFound()); } if (int.TryParse(entityTag, out int timeStamp) && auction.TimeStamp == timeStamp) { return(StatusCode((int)HttpStatusCode.NotModified)); } return(Ok(auction)); }
public async Task <IActionResult> Get() { var cosmosCollection = new CosmosCollection <User>("UsersCollection"); var items = await cosmosCollection.GetItemsAsync(); return(Ok(items.AsQueryable())); }
public IActionResult Get() { var cosmosCollection = new CosmosCollection <Auction>("AuctionsCollection"); var items = cosmosCollection.GetItemsAsync(); return(Ok(items.AsQueryable())); }
internal string GetContainerName(CosmosCollection collection) { switch (collection) { case CosmosCollection.Session: default: return(_settings.UserSessionsCollection); case CosmosCollection.LmiData: return(_settings.LmiDataCollection); } }
public async Task <HttpResponseMessage> UpsertItemAsync(object item, CosmosCollection collection) { Throw.IfNull(item, nameof(item)); var container = _client.GetContainer(_settings.DatabaseName, GetContainerName(collection)); Throw.IfNull(container, nameof(container)); var result = await container.UpsertItemAsync(item); return(result.StatusCode switch { HttpStatusCode.OK => new HttpResponseMessage(HttpStatusCode.OK), HttpStatusCode.Created => new HttpResponseMessage(HttpStatusCode.Created), _ => new HttpResponseMessage(HttpStatusCode.InternalServerError) });
public async Task <IActionResult> Patch(string key, [FromBody] JsonPatchDocument <Auction> auctionPatch) { var cosmosCollection = new CosmosCollection <Auction>("AuctionsCollection"); var auction = (await cosmosCollection.GetItemsAsync(item => item.Id == key)).FirstOrDefault(); if (auction == null) { return(NotFound()); } auctionPatch.ApplyTo(auction); await cosmosCollection.UpdateItemAsync(key, auction); return(Accepted(auction)); }
public async Task <HttpResponseMessage> CreateItemAsync(object item, CosmosCollection collection) { Throw.IfNull(item, nameof(item)); var container = _client.GetContainer(_settings.DatabaseName, GetContainerName(collection)); Throw.IfNull(container, nameof(container)); var result = await container.CreateItemAsync(item); if (result.StatusCode == HttpStatusCode.Created) { return(new HttpResponseMessage(HttpStatusCode.Created)); } return(new HttpResponseMessage(HttpStatusCode.InternalServerError)); }
public async Task <IActionResult> Put([FromODataUri] string key, [FromBody] Auction auctionUpdate) { var cosmosCollection = new CosmosCollection <Auction>("AuctionsCollection"); var auction = (await cosmosCollection.GetItemsAsync(item => item.Id == key)).FirstOrDefault(); if (auction == null) { return(NotFound()); } if (auction.TimeStamp != auctionUpdate.TimeStamp) { return(Conflict()); } await cosmosCollection.UpdateItemAsync(key, auctionUpdate); return(Accepted(auction)); }
public async Task <HttpResponseMessage> ReadItemAsync(string id, string partitionKey, CosmosCollection collection) { Throw.IfNullOrWhiteSpace(id, nameof(id)); var container = _client.GetContainer(_settings.DatabaseName, GetContainerName(collection)); Throw.IfNull(container, nameof(container)); try { var result = await container.ReadItemAsync <object>(id, string.IsNullOrEmpty(partitionKey)?PartitionKey.None : new PartitionKey(partitionKey)); if (result.StatusCode == HttpStatusCode.OK) { if (result.Resource == null) { return(new HttpResponseMessage(HttpStatusCode.NotFound)); } return(new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent(result.Resource.ToString()) }); } } catch (Exception e) { _logger.LogError($"Unable to find item with id: {id}, Error message: {e.Message}, Inner Error: {e.InnerException?.Message}"); return(new HttpResponseMessage(HttpStatusCode.NotFound)); } return(new HttpResponseMessage(HttpStatusCode.NotFound)); }
public IActionResult Get(string key) { var cosmosCollection = new CosmosCollection <User>("UsersCollection"); return(Ok(cosmosCollection.GetItemAsync(key))); }
public async Task <IActionResult> LoadAll() { var cosmosAccounts = await _cosmosService.GetAllCosmosAccounts(); var response = new List <CosmosDatabaseAccount>(); foreach (var account in cosmosAccounts) { var databases = new List <CosmosDatabase>(); var cosmosClient = _clientHolder.GetClient(account.Endpoint); var allOffers = (await cosmosClient.QueryOffersV2Async()).ToList(); var dbs = await cosmosClient.QueryDatabasesAsync(); foreach (var db in dbs) { var databaseOffer = allOffers.SingleOrDefault(x => x.ResourceLink == db.SelfLink); var database = new CosmosDatabase { Id = db.Id, ResourceId = db.ResourceId, Collections = new List <CosmosCollection>(), Offer = databaseOffer != null ? new CosmosOffer { Id = databaseOffer.Id, ResourceId = databaseOffer.ResourceId, Throughput = databaseOffer.Content.OfferThroughput } : null }; var collections = new List <CosmosCollection>(); var documentCollections = await cosmosClient.QueryCollectionsAsync(database.Id); foreach (var documentCollection in documentCollections) { var collectionOffer = allOffers.SingleOrDefault(x => x.ResourceLink == documentCollection.SelfLink); var collection = new CosmosCollection { Id = documentCollection.Id, ResourceId = documentCollection.ResourceId, PartitionKey = documentCollection.PartitionKey?.Paths?.FirstOrDefault() ?? "", DatabaseHasOffer = database.HasOffer, Offer = collectionOffer != null ? new CosmosOffer { Id = collectionOffer.Id, ResourceId = collectionOffer.ResourceId, Throughput = collectionOffer.Content.OfferThroughput } : null }; collections.Add(collection); } database.Collections = collections; databases.Add(database); } var databaseAccount = new CosmosDatabaseAccount { Databases = databases, ServiceUrl = account.Endpoint }; response.Add(databaseAccount); } return(Ok(response)); }