Skip to content

[Java] Implement Transaction Isolation for bulk lamp move #298

@davideme

Description

@davideme

Task

Implement POST /rooms/{roomId}/lamps/bulk-move with proper transaction isolation.

Endpoint

POST /rooms/{roomId}/lamps/bulk-move

{
  "lampIds": ["uuid1", "uuid2", "uuid3"],
  "targetRoomId": "target-uuid"
}

Functional Requirement

  • Must be atomic - either all lamps move or none do
  • Must handle concurrent requests safely - no race conditions

Implementation Hints

  • Use @Transactional annotation with appropriate isolation level
  • Consider @Lock(LockModeType.PESSIMISTIC_WRITE) for row locking
  • Use bulk JPQL UPDATE instead of individual entity updates

Acceptance Criteria

  • All lamps move to target room on success
  • No lamps move if any validation fails (atomic)
  • Returns 409 if any lamp doesn't belong to source room
  • Concurrent requests don't cause data corruption

Parent Issue

Relates to #289

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions