Current section
Files
Jump to
Current section
Files
lib/db/queries.ex
defmodule ExWorker.DB.Queries do
@moduledoc false
alias ExWorker.DB.Message
alias Memento.Query
# read all messages
def read_all do
Memento.transaction! fn ->
Query.all(Message)
end
end
# create new message
def message_create(message_value) when is_binary(message_value) do
Memento.transaction! fn ->
Query.write(%Message{message: message_value, status: :created})
end
end
# update message
def message_update(message) when is_map(message) do
Memento.transaction! fn ->
Query.write(message)
end
end
# get list of incompleted messages
def incompleted_messages do
run_select_query(
{:or,
{:==, :status, :created},
{:==, :status, :active},
{:==, :status, :failed}
}
)
end
# get list of completed messages
def completed_messages do
run_select_query(
{:==, :status, :completed}
)
end
# get list of active messages
def active_messages do
run_select_query(
{:==, :status, :active}
)
end
defp run_select_query(pattern) do
Memento.transaction! fn ->
Query.select(Message, pattern)
end
end
end