public async Task <Unit> Handle(Command message, CancellationToken cancellationToken) { var article = await _context.Articles.FirstOrDefaultAsync(x => x.Slug == message.Slug, cancellationToken); if (article == null) { // throw new RestException(HttpStatusCode.NotFound, new {Article= Constants.NOT_FOUND}); } // Remove the deleted article from the context _context.Articles.Remove(article); await _context.SaveChangesAsync(cancellationToken); return(Unit.Value); }
// public async Task<ArticleEnvelope> Handle (Command message, CancellationToken cancellationToken) { // var author = await _context.Persons.FirstAsync (x => x.Username == _currentUser.GetCurrentUsername (), cancellationToken); // var tags = new List<Tag> (); // foreach (var tag in (message.Article.TagList ?? Enumerable.Empty<string> ())) { // var t = await _context.Tags.FindAsync (tag); // if (t == null) { // t = new Tag () { // TagId = tag // }; // await _context.Tags.AddAsync (t, cancellationToken); // // Save immediately for reuse // await _context.SaveChangesAsync (cancellationToken); // } // tags.Add (t); // } // var article = new Article () { // // Author = author, // // Body = message.Article.Body, // // Description = message.Article.Title, // CreatedAt = DateTime.UtcNow, // UpdatedAt = DateTime.UtcNow, // // Slug = message.Article.Title.GenerateSlug () // }; // await _context.Articles.AddAsync (article, cancellationToken); // await _context.ArticleTags.AddRangeAsync (tags.Select (x => new ArticleTag () { // Article = article, // Tag = x // }), cancellationToken); // await _context.SaveChangesAsync (cancellationToken); // return new ArticleEnvelope (article); // } public async Task <ArticleEnvelope> Handle(Command request, CancellationToken cancellationToken) { var article = new Article() { // Id = request.Id, Title = request.Article.Title, Body = request.Article.Body, Description = request.Article.Description, CreatedAt = DateTime.UtcNow, UpdatedAt = DateTime.UtcNow, }; await _context.Articles.AddAsync(article, cancellationToken); await _context.SaveChangesAsync(cancellationToken); return(new ArticleEnvelope(article)); }