Spring+Kotlin) 채팅방 생성하기

성승모·2024년 7월 25일
0
post-custom-banner

필요한 정보

개요) 조기 축구회를 관리하기 위한 앱이므로 모든 톡방은 앱이 생성하여 제공한다. 따라서 처음 조기 축구회를 등록하였을때 생성되며 신규 가입자를 자동으로 초대한다.

  • 생성시: 새로 생성된 조기 축구회 id
  • 신규 가입시: 신규 가입자의 기기 token

테이블

  • 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

<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에 채팅방 생성 로직도 넣어준다.

profile
안녕하세요!
post-custom-banner

0개의 댓글