I need to create many-to-many reference that will contain additional fields. Eg I have
object Servers : UUIDTable("servers") {
val name = text("name")
val description = text("description").nullable()
val link = text("link").nullable()
val privacy = enumeration<ServerPrivacy>("privacy").default(ServerPrivacy.PUBLIC)
val owner = reference("owner", Users, onDelete = ReferenceOption.CASCADE)
}
class Server(id: EntityID<UUID>) : UUIDEntity(id, Servers) {
companion object : UUIDEntityClass<Server>(Servers)
var name by Servers.name
var description by Servers.description
var link by Servers.link
var privacy by Servers.privacy
var owner by User referencedOn Servers.owner
val categories by Category referrersOn Categories.server
val members by Members.server
}
object Users : UUIDTable("users") {
val login = text("login")
val password = text("password")
val username = text("username")
val link = text("link").nullable()
val locale = enumeration<LanguageRegion>("locale")
val flags = integer("flags").default(0)
val isBanned = bool("is_banned").default(false)
}
class User(id: EntityID<UUID>) : UUIDEntity(id, Users) {
companion object : UUIDEntityClass<User>(Users)
var login by Users.login
var password by Users.password
var username by Users.username
var link by Users.link
var locale by Users.locale
var flags by Users.flags
var isBanned by Users.isBanned
}
and I need to link User
s on Server
s with many-to many reference. I created table like
object Members : UUIDTable("members") {
val user = reference("user", Users, onDelete = ReferenceOption.CASCADE)
val server = reference("server", Servers, onDelete = ReferenceOption.CASCADE)
}
and understood that I need to contain another information in the Members
and also will be helpful if I'll create entity like Member
for easier data manipulation