update swagger implementation

This commit is contained in:
voltsrage
2026-06-26 04:22:47 +08:00
parent 869006e5e7
commit 9777a335c5
8 changed files with 126 additions and 36 deletions
@@ -30,30 +30,31 @@ public class DigitizationBatchesController : ControllerBase
/// Uploads a scanned document and creates a new digitization batch.
/// </summary>
[HttpPost]
[Consumes("multipart/form-data")]
[ProducesResponseType(typeof(ApiResponse<BatchDetailResponse>), StatusCodes.Status201Created)]
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status400BadRequest)]
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status401Unauthorized)]
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status409Conflict)]
[RequestSizeLimit(25 * 1024 * 1024)]
public async Task<IActionResult> Create(
IFormFile file,
[FromForm] CreateBatchRequest req)
public async Task<IActionResult> Create([FromForm] CreateBatchForm form)
{
if (file is null || file.Length == 0)
if (form.File is null || form.File.Length == 0)
return BadRequest(ApiResponse<object>.Fail(400, "File is required.", "EMPTY_FILE"));
if (!_allowedMimeTypes.Contains(file.ContentType))
if (!_allowedMimeTypes.Contains(form.File.ContentType))
return BadRequest(ApiResponse<object>.Fail(400,
"Accepted formats: PDF, JPEG, PNG.", "INVALID_MIME_TYPE"));
var req = form.ToMetadata();
var parsedBatchType = BatchTypeExtensions.FromDbString(req.BatchType.ToUpperInvariant());
var parsedTrack = string.IsNullOrEmpty(req.Track)
? BatchTrack.Backfill
: BatchTrackExtensions.FromDbString(req.Track.ToUpperInvariant());
var actorUserId = Guid.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)!);
using var stream = file.OpenReadStream();
using var stream = form.File.OpenReadStream();
var batch = await _batches.CreateAsync(
stream, file.ContentType, parsedBatchType, parsedTrack, req.PatientId, actorUserId);
stream, form.File.ContentType, parsedBatchType, parsedTrack, req.PatientId, actorUserId);
return StatusCode(201, ApiResponse<BatchDetailResponse>.Created(BatchDetailResponse.FromEntity(batch)));
}
@@ -62,6 +63,7 @@ public class DigitizationBatchesController : ControllerBase
/// </summary>
[HttpGet("{id:guid}")]
[ProducesResponseType(typeof(ApiResponse<BatchDetailResponse>), StatusCodes.Status200OK)]
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status401Unauthorized)]
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status404NotFound)]
public async Task<IActionResult> Get(Guid id)
{
@@ -76,7 +78,8 @@ public class DigitizationBatchesController : ControllerBase
/// Lists batches with optional filters and pagination.
/// </summary>
[HttpGet]
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status200OK)]
[ProducesResponseType(typeof(ApiResponse<BatchListResponse>), StatusCodes.Status200OK)]
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status401Unauthorized)]
public async Task<IActionResult> List(
[FromQuery] string? status,
[FromQuery] string? batchType,
@@ -90,14 +93,12 @@ public class DigitizationBatchesController : ControllerBase
BatchTrack? parsedTrack = string.IsNullOrEmpty(track) ? null : BatchTrackExtensions.FromDbString(track.ToUpperInvariant());
var result = await _batches.ListAsync(parsedStatus, parsedBatchType, assignedTo, parsedTrack, page, pageSize);
return Ok(ApiResponse<object>.Ok(new
{
items = result.Items,
page = result.Page,
pageSize = result.PageSize,
totalCount = result.TotalCount,
totalPages = result.TotalPages
}));
return Ok(ApiResponse<BatchListResponse>.Ok(new BatchListResponse(
result.Items.Select(b => BatchDetailResponse.FromEntity(b)).ToList(),
result.Page,
result.PageSize,
result.TotalCount,
result.TotalPages)));
}
/// <summary>
@@ -105,6 +106,7 @@ public class DigitizationBatchesController : ControllerBase
/// </summary>
[HttpPatch("{id:guid}/assign")]
[ProducesResponseType(typeof(ApiResponse<BatchDetailResponse>), StatusCodes.Status200OK)]
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status401Unauthorized)]
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status404NotFound)]
[ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status409Conflict)]
public async Task<IActionResult> Assign(Guid id, [FromBody] AssignBatchRequest req)