|
@@ -1,4 +1,5 @@
|
|
|
using System.Security.Claims;
|
|
using System.Security.Claims;
|
|
|
|
|
+using LiteDB;
|
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
using RunnersMeet.Server.Domain;
|
|
using RunnersMeet.Server.Domain;
|
|
@@ -40,4 +41,25 @@ public class TracksController : ControllerBase
|
|
|
|
|
|
|
|
return Ok(track);
|
|
return Ok(track);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ [HttpGet("{id}")]
|
|
|
|
|
+ public ActionResult<Track> GetTrack(string id)
|
|
|
|
|
+ {
|
|
|
|
|
+ var track = _queryFactory.TrackQuery().Get(new ObjectId(id));
|
|
|
|
|
+
|
|
|
|
|
+ return Ok(track);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ [HttpPut("{id}")]
|
|
|
|
|
+ public ActionResult<Track> UpdateTrack([FromRoute] string id, [FromBody] Track track)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (id != track.TrackId.ToString())
|
|
|
|
|
+ {
|
|
|
|
|
+ throw new ArgumentException("Object ID in URL does not match track ID");
|
|
|
|
|
+ }
|
|
|
|
|
+ var userId = HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value ?? "<unknown>";
|
|
|
|
|
+ var result = _queryFactory.UpdateTrackCommand().Update(userId, track);
|
|
|
|
|
+
|
|
|
|
|
+ return Ok(result);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|