39 lines
872 B
Elixir
39 lines
872 B
Elixir
defmodule WorkloadService.Workload.Queries do
|
|
@moduledoc """
|
|
Database query functions for tasks.
|
|
"""
|
|
|
|
import Ecto.Query
|
|
alias WorkloadService.Projections.Task
|
|
alias WorkloadService.Repo
|
|
|
|
def list_tasks(params \\ %{}) do
|
|
base_query()
|
|
|> Flop.validate_and_run(params, for: Task)
|
|
end
|
|
|
|
def list_tasks_by_org(org_id, params \\ %{}) do
|
|
base_query()
|
|
|> where(org_id: ^org_id)
|
|
|> Flop.validate_and_run(params, for: Task)
|
|
end
|
|
|
|
def get_task_by_id(id) do
|
|
case Repo.get(Task, id) do
|
|
nil -> {:error, :not_found}
|
|
task -> {:ok, task}
|
|
end
|
|
end
|
|
|
|
def get_task_by_org_and_application(org_id, application_id) do
|
|
case Repo.get_by(Task, org_id: org_id, application_id: application_id) do
|
|
nil -> {:error, :not_found}
|
|
task -> {:ok, task}
|
|
end
|
|
end
|
|
|
|
defp base_query do
|
|
from(t in Task, as: :task)
|
|
end
|
|
end
|