캐릭터 챗봇 #338

Merged
klaus merged 119 commits from test into main 2025-09-10 06:08:47 +00:00
3 changed files with 82 additions and 0 deletions
Showing only changes of commit 694d9cd05a - Show all commits

View File

@ -0,0 +1,22 @@
package kr.co.vividnext.sodalive.chat.room
import kr.co.vividnext.sodalive.common.BaseEntity
import javax.persistence.Entity
import javax.persistence.FetchType
import javax.persistence.JoinColumn
import javax.persistence.ManyToOne
@Entity
class CharacterChatMessage(
val message: String,
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "chat_room_id", nullable = false)
val chatRoom: CharacterChatRoom,
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "participant_id", nullable = false)
val participant: CharacterChatParticipant,
val isActive: Boolean = true
) : BaseEntity()

View File

@ -0,0 +1,40 @@
package kr.co.vividnext.sodalive.chat.room
import kr.co.vividnext.sodalive.chat.character.ChatCharacter
import kr.co.vividnext.sodalive.common.BaseEntity
import kr.co.vividnext.sodalive.member.Member
import javax.persistence.CascadeType
import javax.persistence.Entity
import javax.persistence.EnumType
import javax.persistence.Enumerated
import javax.persistence.FetchType
import javax.persistence.JoinColumn
import javax.persistence.ManyToOne
import javax.persistence.OneToMany
@Entity
class CharacterChatParticipant(
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "chat_room_id", nullable = false)
val chatRoom: CharacterChatRoom,
@Enumerated(EnumType.STRING)
val participantType: ParticipantType,
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_id")
val member: Member? = null,
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "character_id")
val character: ChatCharacter? = null,
val isActive: Boolean = true
) : BaseEntity() {
@OneToMany(mappedBy = "participant", cascade = [CascadeType.ALL], fetch = FetchType.LAZY)
val messages: MutableList<CharacterChatMessage> = mutableListOf()
}
enum class ParticipantType {
USER, CHARACTER
}

View File

@ -0,0 +1,20 @@
package kr.co.vividnext.sodalive.chat.room
import kr.co.vividnext.sodalive.common.BaseEntity
import javax.persistence.CascadeType
import javax.persistence.Entity
import javax.persistence.FetchType
import javax.persistence.OneToMany
@Entity
class CharacterChatRoom(
val sessionId: String,
val title: String,
val isActive: Boolean = true
) : BaseEntity() {
@OneToMany(mappedBy = "chatRoom", cascade = [CascadeType.ALL], fetch = FetchType.LAZY)
val messages: MutableList<CharacterChatMessage> = mutableListOf()
@OneToMany(mappedBy = "chatRoom", cascade = [CascadeType.ALL], fetch = FetchType.LAZY)
val participants: MutableList<CharacterChatParticipant> = mutableListOf()
}