defmodule DataHoard.Ingestion.Gmail do
use Ash.Resource,
otp_app: :data_hoard,
domain: DataHoard.Ingestion
alias DataHoard.Ingestion.Gmail.MessagesList.Message
resource do
require_primary_key? false
end
actions do
action :messages_list, {:array, DataHoard.Ingestion.Gmail.MessagesList.Message} do
argument :google_oauth_token, :string
run fn input, _context ->
with {:ok, messages_list} <-
DataHoard.Integrations.Google.Gmail.get_messages_list(
input.arguments.google_oauth_token
) do
messages = Enum.map(messages_list.messages, &Message.from_messages_list/1)
{:ok, messages}
else
{:error, error} -> {:error, error.message}
end
end
end
end
end
defmodule DataHoard.Ingestion.Gmail do
use Ash.Resource,
otp_app: :data_hoard,
domain: DataHoard.Ingestion
alias DataHoard.Ingestion.Gmail.MessagesList.Message
resource do
require_primary_key? false
end
actions do
action :messages_list, {:array, DataHoard.Ingestion.Gmail.MessagesList.Message} do
argument :google_oauth_token, :string
run fn input, _context ->
with {:ok, messages_list} <-
DataHoard.Integrations.Google.Gmail.get_messages_list(
input.arguments.google_oauth_token
) do
messages = Enum.map(messages_list.messages, &Message.from_messages_list/1)
{:ok, messages}
else
{:error, error} -> {:error, error.message}
end
end
end
end
end