package kr.itn.itnhub.org; import kr.itn.itnhub.provision.ChannelProvisionService; import kr.itn.itnhub.provision.ProvisionResult; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController @RequestMapping("/api/orgs") public class OrganizationController { private final OrganizationService orgService; private final ChannelProvisionService provisionService; public OrganizationController(OrganizationService orgService, ChannelProvisionService provisionService) { this.orgService = orgService; this.provisionService = provisionService; } @GetMapping public List list() { return orgService.findAll(); } @PutMapping("/{id}/assignments") public OrgResponse updateAssignments(@PathVariable Long id, @RequestBody AssignmentRequest request) { return orgService.updateAssignments(id, request); } /** * 채널 2개를 보장한다. 부분 실패도 200으로 돌려주고 본문의 mj/law로 판단하게 한다. * 한쪽만 성공한 상태 자체가 정상적인 중간 상태이기 때문이다. */ @PostMapping("/{id}/channels") public ProvisionResult provision(@PathVariable Long id) { return provisionService.provision(id); } }