Delete image tags and unlink from images
All checks were successful
build-and-deploy / build-deploy (push) Successful in 33s

This commit is contained in:
androidlover5842
2026-01-27 21:26:50 +05:30
parent c2dd4607fc
commit 0485d6a3c7
2 changed files with 7 additions and 3 deletions

View File

@@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.ResponseStatus import org.springframework.web.bind.annotation.ResponseStatus
import org.springframework.web.bind.annotation.RestController import org.springframework.web.bind.annotation.RestController
import org.springframework.web.server.ResponseStatusException import org.springframework.web.server.ResponseStatusException
import org.springframework.transaction.annotation.Transactional
import java.util.UUID import java.util.UUID
@RestController @RestController
@@ -68,16 +69,15 @@ class RoomImageTags(
@DeleteMapping("/{tagId}") @DeleteMapping("/{tagId}")
@ResponseStatus(HttpStatus.NO_CONTENT) @ResponseStatus(HttpStatus.NO_CONTENT)
@Transactional
fun deleteTag( fun deleteTag(
@PathVariable tagId: UUID, @PathVariable tagId: UUID,
@AuthenticationPrincipal principal: MyPrincipal? @AuthenticationPrincipal principal: MyPrincipal?
) { ) {
requireSuperAdmin(principal) requireSuperAdmin(principal)
if (roomImageRepo.existsByTagsId(tagId)) {
throw ResponseStatusException(HttpStatus.CONFLICT, "Tag is used by images")
}
val tag = roomImageTagRepo.findById(tagId).orElse(null) val tag = roomImageTagRepo.findById(tagId).orElse(null)
?: throw ResponseStatusException(HttpStatus.NOT_FOUND, "Tag not found") ?: throw ResponseStatusException(HttpStatus.NOT_FOUND, "Tag not found")
roomImageRepo.deleteTagLinks(tagId)
roomImageTagRepo.delete(tag) roomImageTagRepo.delete(tag)
} }

View File

@@ -42,6 +42,10 @@ interface RoomImageRepo : JpaRepository<RoomImage, UUID> {
fun existsByRoomIdAndContentHash(roomId: UUID, contentHash: String): Boolean fun existsByRoomIdAndContentHash(roomId: UUID, contentHash: String): Boolean
fun existsByTagsId(id: UUID): Boolean fun existsByTagsId(id: UUID): Boolean
@org.springframework.data.jpa.repository.Modifying
@Query(value = "delete from room_image_tag_link where tag_id = :tagId", nativeQuery = true)
fun deleteTagLinks(@Param("tagId") tagId: UUID): Int
@Query("select coalesce(max(ri.roomSortOrder), 0) from RoomImage ri where ri.room.id = :roomId") @Query("select coalesce(max(ri.roomSortOrder), 0) from RoomImage ri where ri.room.id = :roomId")
fun findMaxRoomSortOrder(@Param("roomId") roomId: UUID): Int fun findMaxRoomSortOrder(@Param("roomId") roomId: UUID): Int