Compare commits
No commits in common. '408a5216a59c639dd194448a837c88f0cc95033a' and '0460559df4f2b862e1e9bb2667bd207bc6324ec8' have entirely different histories.
408a5216a5
...
0460559df4
5 changed files with 3 additions and 124 deletions
@ -1,60 +0,0 @@ |
|||||||
using backend.Models; |
|
||||||
using backend.Services; |
|
||||||
using Microsoft.AspNetCore.Mvc; |
|
||||||
|
|
||||||
namespace backend.Controllers; |
|
||||||
[ApiController] |
|
||||||
[Route("blog/api/[controller]")]
|
|
||||||
public class BlogPostController: ControllerBase |
|
||||||
{ |
|
||||||
private readonly BlogPostService _blogPostService; |
|
||||||
|
|
||||||
public BlogPostController(BlogPostService blogPostService) |
|
||||||
{ |
|
||||||
_blogPostService = blogPostService; |
|
||||||
} |
|
||||||
|
|
||||||
[HttpGet] |
|
||||||
public async Task<List<BlogPost>> Get() => |
|
||||||
await _blogPostService.GetAllPostsAsync(); |
|
||||||
|
|
||||||
[HttpGet("{id:length(24)}")] |
|
||||||
public async Task<BlogPost?> Get(string id) => |
|
||||||
await _blogPostService.GetPostAsync(id); |
|
||||||
|
|
||||||
[HttpGet("newest/{n}")] |
|
||||||
public async Task<List<BlogPost>> GetLast(int n) => |
|
||||||
await _blogPostService.GetLastNPostsAsync(n); |
|
||||||
|
|
||||||
[HttpPost] |
|
||||||
public async Task<IActionResult> Post([FromBody]BlogPost post) |
|
||||||
{ |
|
||||||
await _blogPostService.CreatePostAsync(post); |
|
||||||
return CreatedAtAction(nameof(Get), new {id = post.Id}, post); |
|
||||||
} |
|
||||||
|
|
||||||
[HttpPut("{id:length(24)}")] |
|
||||||
public async Task<IActionResult> Put(string id, [FromBody]BlogPost post) |
|
||||||
{ |
|
||||||
var postToUpdate = await _blogPostService.GetPostAsync(id); |
|
||||||
if (postToUpdate == null) |
|
||||||
{ |
|
||||||
return NotFound(); |
|
||||||
} |
|
||||||
await _blogPostService.UpdatePostAsync(id, post); |
|
||||||
return NoContent(); |
|
||||||
} |
|
||||||
|
|
||||||
[HttpDelete("{id:length(24)}")] |
|
||||||
public async Task<IActionResult> Delete(string id) |
|
||||||
{ |
|
||||||
var postToDelete = await _blogPostService.GetPostAsync(id); |
|
||||||
if (postToDelete == null) |
|
||||||
{ |
|
||||||
return NotFound(); |
|
||||||
} |
|
||||||
await _blogPostService.DeletePostAsync(id); |
|
||||||
return NoContent(); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -1,57 +0,0 @@ |
|||||||
using backend.Models; |
|
||||||
using Microsoft.Extensions.Options; |
|
||||||
using MongoDB.Driver; |
|
||||||
|
|
||||||
namespace backend.Services; |
|
||||||
|
|
||||||
public class BlogPostService |
|
||||||
{ |
|
||||||
private readonly IMongoCollection<BlogPost> _posts; |
|
||||||
|
|
||||||
public BlogPostService(IOptions<BlogDatabaseSettings> settings) |
|
||||||
{ |
|
||||||
var client = new MongoClient(settings.Value.ConnectionString); |
|
||||||
var database = client.GetDatabase(settings.Value.DatabaseName); |
|
||||||
|
|
||||||
_posts = database.GetCollection<BlogPost>(settings.Value.PostsCollectionName); |
|
||||||
} |
|
||||||
|
|
||||||
public async Task<BlogPost?> GetPostAsync(string id) |
|
||||||
{ |
|
||||||
var post = await _posts.Find(p => p.Id == id).FirstOrDefaultAsync(); |
|
||||||
return post; |
|
||||||
} |
|
||||||
|
|
||||||
public async Task<List<BlogPost>> GetLastNPostsAsync(int n) |
|
||||||
{ |
|
||||||
var posts = await _posts.Find(p => true).SortByDescending(p => p.CreatedAt).Limit(n).ToListAsync(); |
|
||||||
return posts; |
|
||||||
} |
|
||||||
|
|
||||||
public async Task<List<BlogPost>> GetAllPostsAsync() |
|
||||||
{ |
|
||||||
var posts = await _posts.Find(p => true).ToListAsync(); |
|
||||||
return posts; |
|
||||||
} |
|
||||||
|
|
||||||
public async Task CreatePostAsync(BlogPost post) |
|
||||||
{ |
|
||||||
post.CreatedAt = DateTime.UtcNow; |
|
||||||
await _posts.InsertOneAsync(post); |
|
||||||
} |
|
||||||
|
|
||||||
public async Task UpdatePostAsync(string id, BlogPost postIn) |
|
||||||
{ |
|
||||||
var oldPost = await _posts.Find(p => p.Id == id).FirstOrDefaultAsync(); |
|
||||||
//Set timestamps |
|
||||||
postIn.CreatedAt = oldPost.CreatedAt; |
|
||||||
postIn.UpdatedAt = DateTime.UtcNow; |
|
||||||
await _posts.ReplaceOneAsync(p => p.Id == id, postIn); |
|
||||||
} |
|
||||||
|
|
||||||
public async Task DeletePostAsync(string id) |
|
||||||
{ |
|
||||||
await _posts.DeleteOneAsync(p => p.Id == id); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
Loading…
Reference in new issue