Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve data model #135

Merged
merged 5 commits into from
Mar 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
org.gradle.jvmargs=-Xmx4g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.jvmargs=-Xmx6g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.daemon=true
org.gradle.caching=true
Expand All @@ -10,11 +10,11 @@ SONATYPE_AUTOMATIC_RELEASE=true
RELEASE_SIGNING_ENABLED=true

GROUP=app.moviebase
VERSION_NAME=1.3.2
VERSION_NAME=1.3.3-SNAPSHOT

POM_NAME=TMDB API for KMM
POM_DESCRIPTION=Kotlin Multiplatform library to access the TMDB API.
POM_INCEPTION_YEAR=2023
POM_INCEPTION_YEAR=2024

POM_LICENCE_NAME=The Apache Software License, Version 2.0
POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
Expand All @@ -27,7 +27,7 @@ POM_SCM_DEV_CONNECTION=scm:git:git@github.com:MoviebaseApp/tmdb-api.git

POM_DEVELOPER_ID=chrisnkrueger
POM_DEVELOPER_NAME=Chris Krueger
POM_DEVELOPER_URL=https://github.com/username/
POM_DEVELOPER_URL=https://github.com/chrisnkrueger

# Required to publish to Nexus (see https://github.com/gradle/gradle/issues/11308)
systemProp.org.gradle.internal.publish.checksums.insecure=true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package app.moviebase.tmdb.model
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@SerialName("collection")
@Serializable
data class TmdbCollection(
@SerialName("adult") val adult: Boolean,
Expand All @@ -13,7 +14,7 @@ data class TmdbCollection(
@SerialName("original_name") val originalName: String,
@SerialName("overview") val overview: String,
@SerialName("poster_path") val posterPath: String?
) : TmdbSearchable
) : TmdbSearchable, TmdbSearchableListItem

@Serializable
data class TmdbCollectionPageResult(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,8 @@
package app.moviebase.tmdb.model

@Deprecated("Use TmdbGenreId.Movie instead")
object TmdbMovieGenreId {
const val ACTION = 28
const val ADVENTURE = 12
}

object TmdbGenreId {

object Movie {

const val ACTION = 28
const val ADVENTURE = 12
const val ANIMATION = 16
Expand All @@ -28,7 +21,7 @@ object TmdbGenreId {
const val TV_MOVIE = 10770
const val THRILLER = 53
const val WAR = 10752
const val WESTERM = 37
const val WESTERN = 37

val ALL = setOf(
ACTION,
Expand All @@ -49,67 +42,47 @@ object TmdbGenreId {
TV_MOVIE,
THRILLER,
WAR,
WESTERM
WESTERN,
)

fun contains(genreId: Int) = ALL.contains(genreId)
}

object Show {
const val ACTION = 28
const val ADVENTURE = 12
const val ACTION_ADVENTURE = 10759
const val ANIMATION = 16
const val COMEDY = 35
const val CRIME = 80
const val DOCUMENTARY = 99
const val DRAMA = 18
const val FAMILY = 10751
const val FANTASY = 14
const val KIDS = 10762
const val MYSTERY = 9648
const val HISTORY = 36
const val HORROR = 27
const val MUSIC = 10402
const val NEWS = 10763
const val REALITY = 10764
const val SCIENCE_FICTION_FANTASY = 10765
const val SCIENCE_FICTION = 878
const val SOAP = 10766
const val TALK = 10767
const val WAR_POLITICS = 10768
const val ROMANCE = 10749
const val THRILLER = 53
const val WAR = 10752
const val WESTERN = 37

val ALL = setOf(
ACTION,
ADVENTURE,
ACTION_ADVENTURE,
ANIMATION,
COMEDY,
CRIME,
DOCUMENTARY,
DRAMA,
FAMILY,
FANTASY,
KIDS,
MYSTERY,
HISTORY,
HORROR,
MUSIC,
NEWS,
REALITY,
SCIENCE_FICTION_FANTASY,
SCIENCE_FICTION,
SOAP,
TALK,
WAR_POLITICS,
ROMANCE,
THRILLER,
WAR,
WESTERN
WESTERN,
)

fun contains(genreId: Int) = ALL.contains(genreId)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package app.moviebase.tmdb.model

import app.moviebase.tmdb.image.TmdbImage
import app.moviebase.tmdb.core.LocalDateSerializer
import kotlinx.datetime.LocalDate
import kotlinx.serialization.Polymorphic
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
Expand Down Expand Up @@ -57,92 +55,3 @@ sealed interface TmdbMediaListItem : TmdbAnyItem, TmdbBackdropItem, TmdbPosterIt
val popularity: Float
val originalLanguage: String
}

@Polymorphic
@Serializable
sealed interface TmdbSearchableListItem : TmdbAnyItem, TmdbSearchable

@Serializable
data class TmdbMultiPageResult(
@SerialName("page") override val page: Int,
@SerialName("results") override val results: List<TmdbSearchableListItem> = emptyList(),
@SerialName("total_results") override val totalResults: Int,
@SerialName("total_pages") override val totalPages: Int
) : TmdbPageResult<TmdbSearchableListItem>

@Serializable
@SerialName("movie")
data class TmdbMovie(
@SerialName("poster_path") override val posterPath: String?,
@SerialName("adult") val adult: Boolean = false,
@SerialName("overview") override val overview: String,
@SerialName("release_date")
@Serializable(LocalDateSerializer::class)
val releaseDate: LocalDate? = null,
@SerialName("genre_ids") override val genresIds: List<Int>,
@SerialName("id") override val id: Int,
@SerialName("original_title") val originalTitle: String,
@SerialName("original_language") override val originalLanguage: String,
@SerialName("title") val title: String,
@SerialName("backdrop_path") override val backdropPath: String?,
@SerialName("popularity") override val popularity: Float,
@SerialName("vote_count") override val voteCount: Int,
@SerialName("video") val video: Boolean,
@SerialName("vote_average") override val voteAverage: Float
) : TmdbMediaListItem, TmdbSearchableListItem

@Serializable
data class TmdbMoviePageResult(
@SerialName("page") override val page: Int,
@SerialName("results") override val results: List<TmdbMovie> = emptyList(),
@SerialName("total_results") override val totalResults: Int,
@SerialName("total_pages") override val totalPages: Int
) : TmdbPageResult<TmdbMovie>

@Serializable
@SerialName("tv")
data class TmdbShow(
@SerialName("poster_path") override val posterPath: String?,
@SerialName("popularity") override val popularity: Float,
@SerialName("id") override val id: Int,
@SerialName("backdrop_path") override val backdropPath: String?,
@SerialName("vote_average") override val voteAverage: Float,
@SerialName("overview") override val overview: String,
@SerialName("first_air_date")
@Serializable(LocalDateSerializer::class)
val firstAirDate: LocalDate? = null,
@SerialName("origin_country") val originCountry: List<String>,
@SerialName("genre_ids") override val genresIds: List<Int>,
@SerialName("original_language") override val originalLanguage: String,
@SerialName("vote_count") override val voteCount: Int,
@SerialName("name") val name: String,
@SerialName("original_name") val originalName: String
) : TmdbMediaListItem, TmdbSearchableListItem

@Serializable
data class TmdbShowPageResult(
@SerialName("page") override val page: Int,
@SerialName("results") override val results: List<TmdbShow> = emptyList(),
@SerialName("total_results") override val totalResults: Int,
@SerialName("total_pages") override val totalPages: Int
) : TmdbPageResult<TmdbShow>

@Serializable
@SerialName("person")
data class TmdbPerson(
@SerialName("adult") val adult: Boolean,
@SerialName("gender") val gender: TmdbGender,
@SerialName("id") override val id: Int,
@SerialName("known_for_department") val knownForDepartment: String? = null,
@SerialName("name") override val name: String,
@SerialName("profile_path") override val profilePath: String? = null,
@SerialName("popularity") override val popularity: Float
) : TmdbAnyPerson, TmdbSearchableListItem

@Serializable
data class TmdbPersonPageResult(
@SerialName("page") override val page: Int,
@SerialName("results") override val results: List<TmdbPerson> = emptyList(),
@SerialName("total_results") override val totalResults: Int,
@SerialName("total_pages") override val totalPages: Int
) : TmdbPageResult<TmdbPerson>
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,36 @@ enum class TmdbMovieStatus(val value: String) {
}
}

@Serializable
@SerialName("movie")
data class TmdbMovie(
@SerialName("poster_path") override val posterPath: String?,
@SerialName("adult") val adult: Boolean = false,
@SerialName("overview") override val overview: String,
@SerialName("release_date")
@Serializable(LocalDateSerializer::class)
val releaseDate: LocalDate? = null,
@SerialName("genre_ids") override val genresIds: List<Int>,
@SerialName("id") override val id: Int,
@SerialName("original_title") val originalTitle: String,
@SerialName("original_language") override val originalLanguage: String,
@SerialName("title") val title: String,
@SerialName("backdrop_path") override val backdropPath: String?,
@SerialName("popularity") override val popularity: Float,
@SerialName("vote_count") override val voteCount: Int,
@SerialName("video") val video: Boolean,
@SerialName("vote_average") override val voteAverage: Float
) : TmdbMediaListItem, TmdbSearchableListItem

@Serializable
data class TmdbMoviePageResult(
@SerialName("page") override val page: Int,
@SerialName("results") override val results: List<TmdbMovie> = emptyList(),
@SerialName("total_results") override val totalResults: Int,
@SerialName("total_pages") override val totalPages: Int
) : TmdbPageResult<TmdbMovie>


@Serializable
data class TmdbMovieDetail(
val adult: Boolean,
Expand Down
Loading
Loading