From 9049face767bd6377d0d15bb18f8cb61b8f09693 Mon Sep 17 00:00:00 2001 From: androidlover5842 Date: Tue, 27 Jan 2026 16:33:26 +0530 Subject: [PATCH] Auto-assign room image order on upload --- .../com/android/trisolarisserver/controller/RoomImages.kt | 8 ++++---- .../com/android/trisolarisserver/repo/RoomImageRepo.kt | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/com/android/trisolarisserver/controller/RoomImages.kt b/src/main/kotlin/com/android/trisolarisserver/controller/RoomImages.kt index e2c2e52..b5cc21e 100644 --- a/src/main/kotlin/com/android/trisolarisserver/controller/RoomImages.kt +++ b/src/main/kotlin/com/android/trisolarisserver/controller/RoomImages.kt @@ -58,8 +58,6 @@ class RoomImages( @PathVariable roomId: UUID, @AuthenticationPrincipal principal: MyPrincipal?, @RequestParam("file") file: MultipartFile, - @RequestParam(required = false) roomSortOrder: Int?, - @RequestParam(required = false) roomTypeSortOrder: Int?, @RequestParam(required = false) tags: List? ): RoomImageResponse { requirePrincipal(principal) @@ -76,6 +74,8 @@ class RoomImages( throw ResponseStatusException(HttpStatus.BAD_REQUEST, ex.message ?: "Invalid image") } + val nextRoomSortOrder = roomImageRepo.findMaxRoomSortOrder(roomId) + 1 + val nextRoomTypeSortOrder = roomImageRepo.findMaxRoomTypeSortOrder(room.roomType.code) + 1 val image = RoomImage( property = room.property, room = room, @@ -85,8 +85,8 @@ class RoomImages( sizeBytes = stored.sizeBytes, roomTypeCode = room.roomType.code, tags = tags?.toMutableSet() ?: mutableSetOf(), - roomSortOrder = roomSortOrder ?: 0, - roomTypeSortOrder = roomTypeSortOrder ?: 0 + roomSortOrder = nextRoomSortOrder, + roomTypeSortOrder = nextRoomTypeSortOrder ) return roomImageRepo.save(image).toResponse(publicBaseUrl) } diff --git a/src/main/kotlin/com/android/trisolarisserver/repo/RoomImageRepo.kt b/src/main/kotlin/com/android/trisolarisserver/repo/RoomImageRepo.kt index dadb913..72c0895 100644 --- a/src/main/kotlin/com/android/trisolarisserver/repo/RoomImageRepo.kt +++ b/src/main/kotlin/com/android/trisolarisserver/repo/RoomImageRepo.kt @@ -17,4 +17,10 @@ interface RoomImageRepo : JpaRepository { ) fun findByRoomIdOrdered(@Param("roomId") roomId: UUID): List fun findByIdAndRoomIdAndPropertyId(id: UUID, roomId: UUID, propertyId: UUID): RoomImage? + + @Query("select coalesce(max(ri.roomSortOrder), 0) from RoomImage ri where ri.room.id = :roomId") + fun findMaxRoomSortOrder(@Param("roomId") roomId: UUID): Int + + @Query("select coalesce(max(ri.roomTypeSortOrder), 0) from RoomImage ri where ri.roomTypeCode = :roomTypeCode") + fun findMaxRoomTypeSortOrder(@Param("roomTypeCode") roomTypeCode: String): Int }