Current section
Files
Jump to
Current section
Files
lib/transformations/setters.ex
defmodule VistaClient.Transformations.Setters do
alias VistaClient.{Film, Session, Cinema}
@type film :: %Film{}
@type films :: [film]
@type session :: %Session{}
@type sessions :: [session]
@type cinema :: %Cinema{}
@type cinemas :: [cinema]
# PRELOADERS
@spec set_film(session, films) :: session
def set_film(session = %Session{film_id_string: fid}, films) do
film = films |> Enum.find(fn %Film{id: ^fid} -> true; _ -> false end)
%Session{session | film: film}
end
@spec set_films(sessions, films) :: sessions
def set_films(sessions, films) do
sessions
|> Enum.map(fn session -> set_film(session, films) end)
end
@spec set_cinema(session, cinemas) :: session
def set_cinema(session = %Session{cinema_id: cid}, cinemas) do
cinema = cinemas |> Enum.find(fn %Cinema{id: ^cid} -> true; _ -> false end)
%Session{session | cinema: cinema}
end
@spec set_cinemas(sessions, cinemas) :: sessions
def set_cinemas(sessions, cinemas) do
sessions
|> Enum.map(fn session -> set_cinema(session, cinemas) end)
end
end