개요) 조기 축구회를 관리하기 위한 앱이므로 모든 톡방은 앱이 생성하여 제공한다. 따라서 처음 조기 축구회를 등록하였을때 생성되며 신규 가입자를 자동으로 초대한다.
chatting_rooms에 team_id를 추가
Team Entity 생성
<Team.kt>
@Entity
@Table(name = "teams")
class Team(
@Column(unique = true)
var name: String,
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Long? = null
) {
@OneToMany(mappedBy = "team", fetch = FetchType.LAZY)
val users = mutableSetOf<User>()
}
User가 탈퇴했을 시 Team.users에서 탈퇴한 사용자가 remove 되길 원했지만 Entity 정의 어노테이션만으론 불가능하며 service layer에서 관련 삭제 작업을 해주어야 한다고 한다.
<TeamController.kt>
@RestController
@RequestMapping("/team")
class TeamController {
@Autowired
private lateinit var teamService: TeamService
@PostMapping("/create")
fun createTeam(@RequestParam teamName: String,
@AuthenticationPrincipal userDetails: UserDetailsImpl): ResponseEntity<Boolean> {
val creator = userDetails.user
return ResponseEntity.ok(teamService.createTeam(user = creator))
}
}
위 fun createTeam에 채팅방 생성 로직도 넣어준다.