refactor: extract core-model into its own module

This commit is contained in:
2026-04-24 18:11:28 +02:00
parent ab7700d202
commit 354314710b
23 changed files with 145 additions and 145 deletions

View File

@@ -29,6 +29,7 @@ kotlin {
}
dependencies {
implementation(project(":core-model"))
implementation(libs.media3.common)
implementation(libs.kotlinx.coroutines.core)
implementation(libs.jellyfin.core)

View File

@@ -1,7 +0,0 @@
package hu.bbara.purefin.model
data class CastMember(
val name: String,
val role: String,
val imageUrl: String?
)

View File

@@ -1,20 +0,0 @@
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>
)

View File

@@ -1,18 +0,0 @@
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" }
}
}

View File

@@ -1,6 +0,0 @@
package hu.bbara.purefin.model
enum class LibraryKind {
MOVIES,
SERIES,
}

View File

@@ -1,13 +0,0 @@
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)
}

View File

@@ -1,8 +0,0 @@
package hu.bbara.purefin.model
enum class MediaKind {
MOVIE,
SERIES,
SEASON,
EPISODE,
}

View File

@@ -1,23 +0,0 @@
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
)

View File

@@ -1,20 +0,0 @@
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>
)

View File

@@ -1,13 +0,0 @@
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>
)

View File

@@ -1,16 +0,0 @@
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>
)