Skip to content

[Kotlin] Implement Transaction Isolation for bulk lamp move #301

@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 Exposed's transaction { } block
  • Consider SELECT ... FOR UPDATE for pessimistic locking
  • Use batch update operations

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