Reorder room image sequences after delete
All checks were successful
build-and-deploy / build-deploy (push) Successful in 30s

This commit is contained in:
androidlover5842
2026-01-27 17:15:48 +05:30
parent 2b01ed3859
commit c369996132
2 changed files with 51 additions and 0 deletions

View File

@@ -14,6 +14,7 @@ import org.springframework.http.HttpStatus
import org.springframework.http.MediaType
import org.springframework.http.ResponseEntity
import org.springframework.security.core.annotation.AuthenticationPrincipal
import org.springframework.transaction.annotation.Transactional
import org.springframework.web.bind.annotation.DeleteMapping
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
@@ -100,6 +101,7 @@ class RoomImages(
@DeleteMapping("/{imageId}")
@ResponseStatus(HttpStatus.NO_CONTENT)
@Transactional
fun delete(
@PathVariable propertyId: UUID,
@PathVariable roomId: UUID,
@@ -113,6 +115,7 @@ class RoomImages(
val image = roomImageRepo.findByIdAndRoomIdAndPropertyId(imageId, roomId, propertyId)
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, "Image not found")
val roomTypeCode = image.roomTypeCode
try {
Files.deleteIfExists(Paths.get(image.originalPath))
Files.deleteIfExists(Paths.get(image.thumbnailPath))
@@ -120,6 +123,34 @@ class RoomImages(
throw ResponseStatusException(HttpStatus.INTERNAL_SERVER_ERROR, "Failed to delete image files")
}
roomImageRepo.delete(image)
// Reorder room-specific sequence
val roomImages = roomImageRepo.findByRoomIdForReorder(roomId)
if (roomImages.isNotEmpty()) {
var order = 1
for (img in roomImages) {
if (img.roomSortOrder != order) {
img.roomSortOrder = order
}
order++
}
roomImageRepo.saveAll(roomImages)
}
// Reorder room-type sequence
if (!roomTypeCode.isNullOrBlank()) {
val roomTypeImages = roomImageRepo.findByRoomTypeCodeForReorder(roomTypeCode)
if (roomTypeImages.isNotEmpty()) {
var order = 1
for (img in roomTypeImages) {
if (img.roomTypeSortOrder != order) {
img.roomTypeSortOrder = order
}
order++
}
roomImageRepo.saveAll(roomTypeImages)
}
}
}
@GetMapping("/{imageId}/file")

View File

@@ -16,6 +16,26 @@ interface RoomImageRepo : JpaRepository<RoomImage, UUID> {
"""
)
fun findByRoomIdOrdered(@Param("roomId") roomId: UUID): List<RoomImage>
@Query(
"""
select ri
from RoomImage ri
where ri.room.id = :roomId
order by ri.roomSortOrder asc, ri.createdAt desc
"""
)
fun findByRoomIdForReorder(@Param("roomId") roomId: UUID): List<RoomImage>
@Query(
"""
select ri
from RoomImage ri
where ri.roomTypeCode = :roomTypeCode
order by ri.roomTypeSortOrder asc, ri.createdAt desc
"""
)
fun findByRoomTypeCodeForReorder(@Param("roomTypeCode") roomTypeCode: String): List<RoomImage>
fun findByIdAndRoomIdAndPropertyId(id: UUID, roomId: UUID, propertyId: UUID): RoomImage?
fun existsByRoomIdAndContentHash(roomId: UUID, contentHash: String): Boolean