You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.3 KiB
Kotlin
83 lines
2.3 KiB
Kotlin
package moe.odango.index.entity
|
|
|
|
import io.requery.*
|
|
import moe.odango.index.utils.EntityHelper
|
|
import moe.odango.index.utils.InfoSource
|
|
import moe.odango.index.utils.helper
|
|
import java.util.*
|
|
|
|
@Entity
|
|
interface AnimeRelation : Persistable {
|
|
@get:Key
|
|
val id: UUID
|
|
|
|
@get:ManyToOne
|
|
@get:ForeignKey
|
|
@get:Column(name = "anime_from")
|
|
val from: Anime
|
|
|
|
@get:ManyToOne
|
|
@get:ForeignKey
|
|
@get:Column(name = "anime_to")
|
|
val to: Anime
|
|
|
|
var relation: RelationType
|
|
val source: InfoSource
|
|
|
|
companion object : EntityHelper<AnimeRelationEntity> by helper(::AnimeRelationEntity, {
|
|
setId(UUID.randomUUID())
|
|
})
|
|
|
|
enum class RelationType {
|
|
Prequel,
|
|
Sequel,
|
|
SideStory,
|
|
FullStory,
|
|
ParentStory,
|
|
Summary,
|
|
SpinOff,
|
|
AlternateVersion,
|
|
AlternateSetting,
|
|
SameSetting,
|
|
Other,
|
|
Character;
|
|
|
|
val inverse: RelationType
|
|
get() {
|
|
return when (this) {
|
|
Prequel -> Sequel
|
|
Sequel -> Prequel
|
|
Summary -> FullStory
|
|
FullStory -> Summary
|
|
SideStory -> ParentStory
|
|
SpinOff -> ParentStory
|
|
ParentStory -> SideStory
|
|
AlternateSetting -> AlternateSetting
|
|
AlternateVersion -> AlternateVersion
|
|
SameSetting -> SameSetting
|
|
Other -> Other
|
|
Character -> Character
|
|
}
|
|
}
|
|
|
|
companion object {
|
|
fun fromString(type: String): RelationType {
|
|
return when (type.toLowerCase()) {
|
|
"alternate setting" -> AlternateSetting
|
|
"alternate version" -> AlternateVersion
|
|
"prequel" -> Prequel
|
|
"sequel" -> Sequel
|
|
"spin off" -> SpinOff
|
|
"summary" -> Summary
|
|
"side story" -> SideStory
|
|
"full story" -> FullStory
|
|
"parent story" -> ParentStory
|
|
"character" -> Character
|
|
"same setting" -> SameSetting
|
|
else -> Other
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|