public async Task <Tuple <DomainObjects.User, string> > Add(DomainObjects.User user) { var client = GetClient(); var container = client.GetContainer(_options.DatabaseId, _options.ContainerId); var result = await container.CreateItemAsync(user, new PartitionKey(user.Id.ToString())); return(Tuple.Create(result.Resource, result.ETag)); }
public async Task <Tuple <DomainObjects.User, string> > Save(DomainObjects.User user, string etag) { var client = GetClient(); var container = client.GetContainer(_options.DatabaseId, _options.ContainerId); try { var opts = new ItemRequestOptions { IfMatchEtag = etag }; var result = await container.ReplaceItemAsync(user, user.Id.ToString(), new PartitionKey(user.Id.ToString()), opts); return(Tuple.Create(result.Resource, result.ETag)); } catch (CosmosException ex) when(ex.StatusCode == HttpStatusCode.PreconditionFailed || ex.StatusCode == HttpStatusCode.NotFound) { return(null); } }