package fr.natan.akkastreamfileprocessingapi.models import play.api.libs.json.{Json, Writes} object ModelsAndJsonMap { final case class Person(personID: String, primaryName: String, birthYear: Option[String], deathYear: Option[String], primaryProfession: List[String], knownForTitles: List[String] ) { implicit val personJsonFormatter: Writes[Person] = (person: Person) => Json.obj( "person id" -> person.personID, "primary name" -> person.primaryName, "birth year" -> person.birthYear, "death year" -> person.deathYear, "primary profession" -> person.primaryProfession, "known for titles" -> person.knownForTitles ) } final case class TvSerie(tvSerieID: String, titleType: String, primaryTitle: String, originalTitle: String, startYear: String, endYear: Option[String], runtimeMinutes: String, genres: List[String] ) { implicit val tvSerieJsonFormatter: Writes[TvSerie] = (tvSerie: TvSerie) => Json.obj( "tv serie id" -> tvSerie.tvSerieID, "tv serie type" -> tvSerie.titleType, "primary title" -> tvSerie.primaryTitle, "original title" -> tvSerie.originalTitle, "start year" -> tvSerie.startYear, "end year" -> tvSerie.endYear, "runtime minutes" -> tvSerie.runtimeMinutes, "genres" -> tvSerie.genres ) } final case class Episode( id: String, parentId: String, seasonNumber: Option[String], episodeNumber: Option[String] ){ implicit val episodeFormatter : Writes[Episode] = (episode:Episode) => Json.obj( "episode id"-> episode.id, "parent id"-> episode.parentId, "season number"->episode.seasonNumber, "episode number"->episode.episodeNumber ) } }