public async Task <DocumentWrap <T> > UpdateAsync(DocumentWrap <T> item) { //item.SetPropertyValue("Document", item.Document); Uri docUri = UriFactory.CreateDocumentUri(database.Id, collection.Id, item.Id); var replaceDocument = new Document(); var serializer = JsonSerializer.Create(jsonSettings); using (var ms = new MemoryStream()) { using (var writer = new StreamWriter(ms, Encoding.UTF8, 4096, true)) { serializer.Serialize(writer, item); } ms.Position = 0; using (var reader = new StreamReader(ms)) { var jsonReader = new JsonTextReader(reader); replaceDocument.LoadFrom(jsonReader); } } replaceDocument.SetPropertyValue("_self", docUri.OriginalString); var response = await client.ReplaceDocumentAsync(replaceDocument, null); return(item); }
public async Task <DocumentWrap <T> > UpsertAsync(DocumentWrap <T> item) { //item.SetPropertyValue("Document", item.Document); Uri docUri = UriFactory.CreateDocumentCollectionUri(database.Id, collection.Id); var replaceDocument = new Document(); var serializer = JsonSerializer.Create(jsonSettings); using (var ms = new MemoryStream()) { using (var writer = new StreamWriter(ms, Encoding.UTF8, 4096, true)) { serializer.Serialize(writer, item); } ms.Position = 0; using (var reader = new StreamReader(ms)) { var jsonReader = new JsonTextReader(reader); replaceDocument.LoadFrom(jsonReader); } } //replaceDocument.SetPropertyValue("_self", item.SelfLink); var response = await client.UpsertDocumentAsync(docUri, replaceDocument, null, true); //return response.Resource.GetPropertyValue<DocumentWrap<T>>("document"); // (DocumentWrap<T>)response.Resource; return(item); }
public static async Task <Document> UpdateItemAsync(DocumentWrap <T> item) { item.SetPropertyValue("Document", item.Document); Uri docUri = UriFactory.CreateDocumentUri(DatabaseId, CollectionId, item.Id); return(await Client.ReplaceDocumentAsync(docUri, item)); }
public Task <DocumentWrap <T> > UpsertAsync(DocumentWrap <T> item) { var document = Serialize(item); var doc = Collection.AddOrUpdate(item.Id, document, (id, val) => document); return(Task.FromResult(Deserialize(doc))); }
//static ConcurrentDictionary<string, T> collection = new ConcurrentDictionary<string, T>(); public Task <DocumentWrap <T> > AddAsync(DocumentWrap <T> item) { if (!Collection.TryAdd(item.Id, Serialize(item))) { throw new InMemoryDocOptimisticConcurrencyException($"Cannot add {typeof(T).Name} with id {item.Id}."); } return(Task.FromResult(item)); }
//public Task<IEnumerable<T>> GetAsync(Expression<Func<T, bool>> unwrappedFilter, Expression<Func<DocumentWrap<T>, bool>> wrappedFilter) //{ // var wrappedFunc = wrappedFilter.Compile(); // var unwrappedFunc = unwrappedFilter.Compile(); // var result = collection // .Where(kv => wrappedFunc(new DocumentWrap<T>(kv.Value, kv.Key))) // .Where(kv => unwrappedFunc(kv.Value)) // .Select(kv => kv.Value); // return Task.FromResult(result); //} public Task <DocumentWrap <T> > UpdateAsync(DocumentWrap <T> item) { var oldValue = Collection[item.Id]; if (!Collection.TryUpdate(item.Id, Serialize(item), oldValue)) { throw new InMemoryDocOptimisticConcurrencyException($"Cannot update {typeof(T).Name} with id {item.Id}."); } return(Task.FromResult(item)); }
public async Task <DocumentWrap <T> > AddAsync(DocumentWrap <T> item) { var newDocument = new Document(); var serializer = JsonSerializer.Create(jsonSettings); using (var ms = new MemoryStream()) { using (var writer = new StreamWriter(ms, Encoding.UTF8, 4096, true)) { serializer.Serialize(writer, item); } ms.Position = 0; using (var reader = new StreamReader(ms)) { var jsonReader = new JsonTextReader(reader); newDocument.LoadFrom(jsonReader); } } var response = await client.CreateDocumentAsync(collection.SelfLink, newDocument, null, true); return(item); }
public static async Task DeleteItem(DocumentWrap <T> document) { await DeleteItemByDocumentId(document.Id); }
public static async Task <Document> CreateItemAsync(DocumentWrap <T> item, bool disableAutomaticIdGeneration = true) { return(await Client.CreateDocumentAsync(Collection.SelfLink, item, null, disableAutomaticIdGeneration)); }