async Task <List <ProductModel> > IProductService.GetAllProducts(IProductBucketProvider productBucket) { IQueryable <string> allProducts = (from productDO in new BucketContext(productBucket.GetBucket()).Query <string>() select N1QlFunctions.Meta(productDO).Id); List <ProductModel> products = new List <ProductModel>(); foreach (string productId in allProducts) { IDocumentResult <ProductDO> productDO = await productBucket.GetBucket().GetDocumentAsync <ProductDO>(productId); products.Add(ProductModel.FromProductDO(productId, productDO.Content)); } return(products); }
async Task <bool> IProductService.UpsertProduct(IProductBucketProvider productBucket, ProductUpdateInputModel productUpdate) { IDocumentResult upsertResult = await productBucket.GetBucket().UpsertAsync(new Document <ProductDO> { Id = productUpdate.Id, Content = new ProductDO(productUpdate.Name, productUpdate.Price) }); return(upsertResult.Success); }
async Task <string> IProductService.InsertProduct(IProductBucketProvider productBucket, ProductCreateInputModel productCreate) { string productId = Guid.NewGuid().ToString(); await productBucket.GetBucket().InsertAsync(new Document <ProductCreateInputModel> { Id = productId, Content = productCreate }); return(productId); }
async Task <ProductModel> IProductService.GetProduct(IProductBucketProvider productBucket, string id) { IDocumentResult <ProductDO> productDO = await productBucket.GetBucket().GetDocumentAsync <ProductDO>(id); if (productDO.Success) { return(ProductModel.FromProductDO(productDO.Id, productDO.Content)); } else { return(null); } }
async void IProductService.DeleteProduct(IProductBucketProvider productBucket, string id) { await productBucket.GetBucket().RemoveAsync(id); }