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