Powered by AppSignal & Oban Pro

[IM1.1] Import Showtimes for legacy-events

import_events/IM1.1_showtimes.livemd

[IM1.1] Import Showtimes for legacy-events

use QuickAlias, MyAppWeb
use QuickAlias, MyAppBe
use QuickAlias, MyApp
IEx.configure(inspect: [charlists: :as_lists])
IEx.configure(inspect: [limit: :infinity])
require Ecto.Query

Section

defmodule ImportStModule do
  def handle_showtime_for_record(rec) do
    # %{
    #   start: rec.start,
    #   legacy_event_id: rec.id
    # }

    st = %MyApp.EmbeddedEventShowtime{datemark: rec.start |> Dates.date_to_iso_str()}

    st =
      Location.get_by_esel_legacy_id(rec.location_id)
      |> case do
        {:ok, loc} ->
          st |> Map.put(:location, loc.id |> MavuTags.to_plain_uuid())

        {:error, error_info} ->
          st
      end

    # |>MavuUtils.log("mwuits-debug 2024-03-20_19:11 #{elem(__ENV__.function, 0)}(): ", :info)

    Event.get_by_legacy_event_id(rec.id)
    |> case do
      {:ok, rec} ->
        rec
        |> Ash.Changeset.for_update(:update, %{
          showtimes: [st]
        })
        |> Api.update()
        |> case do
          {:ok, ev} ->
            %{state: :ok, msg: "event #{rec.id} #{ev.id} updated "}

          {:error, _error_info} ->
            %{state: :error, msg: "error on event #{rec.id} "}
        end

      {:error, _error_info} ->
        %{state: :error, msg: "event #{rec.id} not found "}
    end
  end
end
rec = Event.get_by_legacy_event_id!(1756)

loc = Location.get_by_id!("018e5ce8-e16f-797b-b397-7e11f3e2a5ae")
# st = %MyApp.EmbeddedEventShowtime{datemark: rec.start |> Dates.date_to_iso_str()}

#     st=
#       Location.get_by_esel_legacy_id(rec.location_id)
#      |> case do
#       {:ok, loc} ->
#         st |> Map.put(:location,loc.id)
#       {:error, error_info} ->
#         st
#     end
LegacyEventImport.get_rows_as_stream(
  # fn q-> q  |> Ecto.Query.where([a],a.id ==  1756) end
)
|> Stream.map(&ImportStModule.handle_showtime_for_record/1)
# |> Enum.take(10)
|> Enum.into([])
|> length()

# |> Kino.DataTable.new()