mirror of
https://github.com/bbara04/Purefin.git
synced 2026-07-23 19:26:50 +00:00
refactor: extract core-model into its own module
This commit is contained in:
1
core-model/.gitignore
vendored
Normal file
1
core-model/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/build
|
||||
13
core-model/build.gradle.kts
Normal file
13
core-model/build.gradle.kts
Normal file
@@ -0,0 +1,13 @@
|
||||
plugins {
|
||||
id("java-library")
|
||||
alias(libs.plugins.kotlin.jvm)
|
||||
}
|
||||
java {
|
||||
sourceCompatibility = JavaVersion.VERSION_11
|
||||
targetCompatibility = JavaVersion.VERSION_11
|
||||
}
|
||||
kotlin {
|
||||
compilerOptions {
|
||||
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package hu.bbara.purefin.model
|
||||
|
||||
data class CastMember(
|
||||
val name: String,
|
||||
val role: String,
|
||||
val imageUrl: String?
|
||||
)
|
||||
20
core-model/src/main/java/hu/bbara/purefin/model/Episode.kt
Normal file
20
core-model/src/main/java/hu/bbara/purefin/model/Episode.kt
Normal file
@@ -0,0 +1,20 @@
|
||||
package hu.bbara.purefin.model
|
||||
|
||||
import java.util.UUID
|
||||
|
||||
data class Episode(
|
||||
val id: UUID,
|
||||
val seriesId: UUID,
|
||||
val seasonId: UUID,
|
||||
val index: Int,
|
||||
val title: String,
|
||||
val synopsis: String,
|
||||
val releaseDate: String,
|
||||
val rating: String,
|
||||
val runtime: String,
|
||||
val progress: Double?,
|
||||
val watched: Boolean,
|
||||
val format: String,
|
||||
val imageUrlPrefix: String,
|
||||
val cast: List<CastMember>
|
||||
)
|
||||
18
core-model/src/main/java/hu/bbara/purefin/model/Library.kt
Normal file
18
core-model/src/main/java/hu/bbara/purefin/model/Library.kt
Normal file
@@ -0,0 +1,18 @@
|
||||
package hu.bbara.purefin.model
|
||||
|
||||
import java.util.UUID
|
||||
|
||||
data class Library(
|
||||
val id: UUID,
|
||||
val name: String,
|
||||
val type: LibraryKind,
|
||||
val posterUrl: String,
|
||||
val series: List<Series>? = null,
|
||||
val movies: List<Movie>? = null,
|
||||
) {
|
||||
init {
|
||||
require(series != null || movies != null) { "Either series or movie must be provided" }
|
||||
require(series == null || movies == null) { "Only one of series or movie can be provided" }
|
||||
require(type == LibraryKind.SERIES || type == LibraryKind.MOVIES) { "Invalid type: $type" }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package hu.bbara.purefin.model
|
||||
|
||||
enum class LibraryKind {
|
||||
MOVIES,
|
||||
SERIES,
|
||||
}
|
||||
13
core-model/src/main/java/hu/bbara/purefin/model/Media.kt
Normal file
13
core-model/src/main/java/hu/bbara/purefin/model/Media.kt
Normal file
@@ -0,0 +1,13 @@
|
||||
package hu.bbara.purefin.model
|
||||
|
||||
import java.util.UUID
|
||||
|
||||
sealed class Media(
|
||||
val id: UUID,
|
||||
val type: MediaKind,
|
||||
) {
|
||||
class MovieMedia(val movieId: UUID) : Media(movieId, MediaKind.MOVIE)
|
||||
class SeriesMedia(val seriesId: UUID) : Media(seriesId, MediaKind.SERIES)
|
||||
class SeasonMedia(val seasonId: UUID, val seriesId: UUID) : Media(seasonId, MediaKind.SEASON)
|
||||
class EpisodeMedia(val episodeId: UUID, val seriesId: UUID) : Media(episodeId, MediaKind.EPISODE)
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package hu.bbara.purefin.model
|
||||
|
||||
enum class MediaKind {
|
||||
MOVIE,
|
||||
SERIES,
|
||||
SEASON,
|
||||
EPISODE,
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package hu.bbara.purefin.model
|
||||
|
||||
import java.util.UUID
|
||||
|
||||
enum class SegmentType(val value: Int) {
|
||||
INTRO(0),
|
||||
OUTRO(1),
|
||||
MAIN_CONTENT(2),
|
||||
PREVIEW(3),
|
||||
RECAP(4);
|
||||
|
||||
companion object {
|
||||
fun fromValue(value: Int): SegmentType? =
|
||||
entries.firstOrNull { it.value == value }
|
||||
}
|
||||
}
|
||||
|
||||
data class MediaSegment(
|
||||
val id: UUID,
|
||||
val type: SegmentType,
|
||||
val startMs: Long,
|
||||
val endMs: Long
|
||||
)
|
||||
20
core-model/src/main/java/hu/bbara/purefin/model/Movie.kt
Normal file
20
core-model/src/main/java/hu/bbara/purefin/model/Movie.kt
Normal file
@@ -0,0 +1,20 @@
|
||||
package hu.bbara.purefin.model
|
||||
|
||||
import java.util.UUID
|
||||
|
||||
data class Movie(
|
||||
val id: UUID,
|
||||
val libraryId: UUID,
|
||||
val title: String,
|
||||
val progress: Double?,
|
||||
val watched: Boolean,
|
||||
val year: String,
|
||||
val rating: String,
|
||||
val runtime: String,
|
||||
val format: String,
|
||||
val synopsis: String,
|
||||
val imageUrlPrefix: String,
|
||||
val audioTrack: String,
|
||||
val subtitles: String,
|
||||
val cast: List<CastMember>
|
||||
)
|
||||
13
core-model/src/main/java/hu/bbara/purefin/model/Season.kt
Normal file
13
core-model/src/main/java/hu/bbara/purefin/model/Season.kt
Normal file
@@ -0,0 +1,13 @@
|
||||
package hu.bbara.purefin.model
|
||||
|
||||
import java.util.UUID
|
||||
|
||||
data class Season(
|
||||
val id: UUID,
|
||||
val seriesId: UUID,
|
||||
val name: String,
|
||||
val index: Int,
|
||||
val unwatchedEpisodeCount: Int,
|
||||
val episodeCount: Int,
|
||||
val episodes: List<Episode>
|
||||
)
|
||||
16
core-model/src/main/java/hu/bbara/purefin/model/Series.kt
Normal file
16
core-model/src/main/java/hu/bbara/purefin/model/Series.kt
Normal file
@@ -0,0 +1,16 @@
|
||||
package hu.bbara.purefin.model
|
||||
|
||||
import java.util.UUID
|
||||
|
||||
data class Series(
|
||||
val id: UUID,
|
||||
val libraryId: UUID,
|
||||
val name: String,
|
||||
val synopsis: String,
|
||||
val year: String,
|
||||
val imageUrlPrefix: String,
|
||||
val unwatchedEpisodeCount: Int,
|
||||
val seasonCount: Int,
|
||||
val seasons: List<Season>,
|
||||
val cast: List<CastMember>
|
||||
)
|
||||
Reference in New Issue
Block a user