From 88110f536f9c3843ecf5016122e101f8a424af77 Mon Sep 17 00:00:00 2001 From: ivarlovlie Date: Sat, 22 Jan 2022 22:43:38 +0100 Subject: Initial commit --- src/server/Api/V1/Entries/CreateEntryRoute.cs | 34 +++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/server/Api/V1/Entries/CreateEntryRoute.cs (limited to 'src/server/Api/V1/Entries/CreateEntryRoute.cs') diff --git a/src/server/Api/V1/Entries/CreateEntryRoute.cs b/src/server/Api/V1/Entries/CreateEntryRoute.cs new file mode 100644 index 0000000..ebe49fc --- /dev/null +++ b/src/server/Api/V1/Entries/CreateEntryRoute.cs @@ -0,0 +1,34 @@ +using IOL.BookmarkThing.Server.Api.V1.Entries.Dtos; + +namespace IOL.BookmarkThing.Server.Api.V1.Entries; + +public class CreateEntryRoute : RouteBaseV1Sync.WithRequest.WithActionResult +{ + private readonly AppDbContext _context; + + public CreateEntryRoute(AppDbContext context) { + _context = context; + } + + /// + /// Create a new entry + /// + /// The entry to create + /// Entry created successfully + /// Invalid entry + [ProducesResponseType(typeof(EntryDto), 200)] + [ProducesResponseType(typeof(List), 400)] + [ApiVersion(ApiSpecV1.VERSION_STRING)] + [HttpPost("~/v{version:apiVersion}/entries/create")] + public override ActionResult Handle(CreateEntryRequest entry) { + var errors = entry.GetErrors(); + if (errors.Count != 0) { + return BadRequest(errors); + } + + var dbEntry = entry.AsDbEntity(LoggedInUser.Id); + _context.Entries.Add(dbEntry); + _context.SaveChanges(); + return Ok(new EntryDto(dbEntry)); + } +} -- cgit v1.3