package models import ( "encoding/json" "github.com/zepyrshut/rating-orama/utils" "time" ) type TvShowDTO struct { ShowID string `json:"tt_show_id"` Title string `json:"title"` Runtime string `json:"runtime"` Episodes []EpisodeDTO `json:"episodes"` } type EpisodeDTO struct { Number int `json:"number"` SeasonID int `json:"season_id"` EpisodeID string `json:"tt_episode_id"` Title string `json:"title"` Aired AiredTime `json:"aired"` AvgRating float64 `json:"avg_rating"` Votes int `json:"votes"` } type AiredTime struct { time.Time } func (tvShow *TvShow) UnmarshalJSON(data []byte) error { var tvShowDTO TvShowDTO err := json.Unmarshal(data, &tvShowDTO) if err != nil { return err } tvShow.TvShowBuilder(tvShowDTO) return nil } func (aired *AiredTime) UnmarshalJSON(data []byte) error { if string(data) == "null" || string(data) == "" { return nil } var s string if err := json.Unmarshal(data, &s); err != nil { return nil } t, err := utils.TimeParser(s) if err != nil { return err } aired.Time = t return nil }