     Repo.all(query)
   end
 
-  def persist_new_movies(movies) do
+  @spec persist_new_movies([Movie.movie()]) :: [
+          {:ok, Ecto.Schema.t()} | {:error, Ecto.Changeset.t()}
+        ]
+  defp persist_new_movies(movies) do
     movies
     |> map(fn mov -> Movie.changeset(%Movie{}, mov) end)
     |> map(fn cset -> Repo.insert(cset) end)
   end
 
-  def persist_showtimes(showtimes) do
+  @spec persist_showtimes([Movie.showtime()]) :: [
+          {:ok, Ecto.Schema.t()} | {:error, Ecto.Changeset.t()}
+        ]
+  defp persist_showtimes(showtimes) do
     showtimes
     |> map(&Showtime.changeset(%Showtime{}, &1))
     |> map(&Repo.insert(&1))

    Repo.all(query)
  end

  def get_saved_movie_showtimes_by_title(titles) do
    query =
      from(
        s in Showtime,

    persist_showtimes(new_showtimes)
  end

  @spec merge_with_showtimes(list(Movie.movie())) :: list(Movie.movie())
  defp merge_with_showtimes(movies) do
    movies
    |> map(fn mov ->
      Map.put(
