Removes response after uploading a photo, and preps things for get photo info endpoint

This commit is contained in:
2026-05-14 11:40:59 -05:00
parent 1dd904055c
commit 1585b6eb7d
4 changed files with 12 additions and 16 deletions

View File

@@ -70,7 +70,7 @@ class TeamController(private val teamService: TeamService, private val photoServ
@PathVariable teamId: TeamId,
@PathVariable itemId: ItemId,
@PathVariable photoId: PhotoId): ResponseEntity<PhotoResponse> {
TODO("Get photo information for the specified Team, Hunt, Item, and Photo")
TODO("Get photo information for the specified Team, Hunt, Item, and Photo. Join on the Hunter table to get the Hunter name. Also verify that the requesting user is either an admin or is on the same Hunt and Team as the Hunter who submitted the Photo")
}
@GetMapping("/{teamId}/item/{itemId}/photo/{photoId}/file")
@@ -88,8 +88,8 @@ class TeamController(private val teamService: TeamService, private val photoServ
@PathVariable teamId: TeamId,
@PathVariable itemId: ItemId,
authentication: Authentication,
@RequestParam file: MultipartFile): ResponseEntity<PhotoResponse> {
return ResponseEntity.ok(photoService.submitPhoto(huntId, itemId, authentication.name, file).toResponse())
@RequestParam file: MultipartFile) {
photoService.submitPhoto(huntId, itemId, authentication.name, file)
}
}

View File

@@ -1,5 +1,6 @@
package net.halfbinary.scavengerhuntapi.model.converter
import net.halfbinary.scavengerhuntapi.model.domain.Hunter
import net.halfbinary.scavengerhuntapi.model.domain.Photo
import net.halfbinary.scavengerhuntapi.model.record.PhotoRecord
import net.halfbinary.scavengerhuntapi.model.response.PhotoResponse
@@ -14,9 +15,9 @@ fun Photo.toRecord() = PhotoRecord(
statusChangeDateTime = statusChangeDateTime
)
fun Photo.toResponse() = PhotoResponse(
fun Photo.toResponse(hunter: Hunter) = PhotoResponse(
id = id,
hunterId = hunterId,
hunterName = hunter.name,
photoUploadDateTime = foundDateTime,
photoStatus = status,
photoStatusChangeDateTime = statusChangeDateTime

View File

@@ -1,13 +1,12 @@
package net.halfbinary.scavengerhuntapi.model.response
import net.halfbinary.scavengerhuntapi.model.HunterId
import net.halfbinary.scavengerhuntapi.model.PhotoId
import net.halfbinary.scavengerhuntapi.model.PhotoStatus
import java.time.LocalDateTime
data class PhotoResponse(
val id: PhotoId,
val hunterId: HunterId,
val hunterName: String,
val photoUploadDateTime: LocalDateTime,
val photoStatus: PhotoStatus,
val photoStatusChangeDateTime: LocalDateTime,

View File

@@ -23,7 +23,7 @@ class PhotoService(
private val s3StorageService: S3StorageService,
private val fileProbeService: FileProbeService
) {
fun submitPhoto(huntId: HuntId, itemId: ItemId, email: String, file: MultipartFile): Photo {
fun submitPhoto(huntId: HuntId, itemId: ItemId, email: String, file: MultipartFile) {
val originalBytes = file.bytes
val fileType = fileProbeService.getFileType(originalBytes)
@@ -48,14 +48,10 @@ class PhotoService(
val savedRecord = photoRepository.save(photo.toRecord())
val baseName = savedRecord.id.toString()
s3StorageService.upload("$baseName${fileProbeService.getFileExtension(fileType)}", originalBytes, fileType)
s3StorageService.upload("${baseName}_large.jpg", originalAsJpeg, MediaType.IMAGE_JPEG_VALUE)
s3StorageService.upload("${baseName}_medium.jpg", resize(originalBytes, 800), MediaType.IMAGE_JPEG_VALUE)
s3StorageService.upload("${baseName}_small.jpg", resize(originalBytes, 200), MediaType.IMAGE_JPEG_VALUE)
return photo
}
private fun toJpeg(bytes: ByteArray): ByteArray {