package com.xuezhanmaster.room.controller; import com.xuezhanmaster.common.api.ApiResponse; import com.xuezhanmaster.room.dto.CreateRoomRequest; import com.xuezhanmaster.room.dto.JoinRoomRequest; import com.xuezhanmaster.room.dto.RoomSummaryResponse; import com.xuezhanmaster.room.dto.ToggleReadyRequest; import com.xuezhanmaster.room.service.RoomService; import jakarta.validation.Valid; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.PathVariable; @RestController @RequestMapping("/api/rooms") public class RoomController { private final RoomService roomService; public RoomController(RoomService roomService) { this.roomService = roomService; } @PostMapping public ApiResponse create(@Valid @RequestBody CreateRoomRequest request) { return ApiResponse.success(roomService.createRoom(request)); } @GetMapping("/{roomId}") public ApiResponse detail(@PathVariable String roomId) { return ApiResponse.success(roomService.getRoomSummary(roomId)); } @PostMapping("/{roomId}/join") public ApiResponse join( @PathVariable String roomId, @Valid @RequestBody JoinRoomRequest request ) { return ApiResponse.success(roomService.joinRoom(roomId, request)); } @PostMapping("/{roomId}/ready") public ApiResponse ready( @PathVariable String roomId, @Valid @RequestBody ToggleReadyRequest request ) { return ApiResponse.success(roomService.toggleReady(roomId, request)); } @GetMapping("/demo") public ApiResponse demo() { return ApiResponse.success(roomService.createDemoRoom()); } }