38 lines
1.1 KiB
Elixir
38 lines
1.1 KiB
Elixir
defmodule BDS.ImportDefinitions do
|
|
@moduledoc false
|
|
|
|
import Ecto.Query
|
|
|
|
alias BDS.ImportDefinitions.ImportDefinition
|
|
alias BDS.Persistence
|
|
alias BDS.Repo
|
|
|
|
def create_definition(attrs) do
|
|
now = Persistence.now_ms()
|
|
|
|
%ImportDefinition{}
|
|
|> ImportDefinition.changeset(%{
|
|
id: Ecto.UUID.generate(),
|
|
project_id: attr(attrs, :project_id),
|
|
name: attr(attrs, :name) || "",
|
|
wxr_file_path: attr(attrs, :wxr_file_path),
|
|
uploads_folder_path: attr(attrs, :uploads_folder_path),
|
|
last_analysis_result: attr(attrs, :last_analysis_result),
|
|
created_at: now,
|
|
updated_at: now
|
|
})
|
|
|> Repo.insert()
|
|
end
|
|
|
|
def list_definitions(project_id) do
|
|
Repo.all(
|
|
from definition in ImportDefinition,
|
|
where: definition.project_id == ^project_id,
|
|
order_by: [desc: definition.updated_at, desc: definition.created_at],
|
|
select: %{id: definition.id, title: definition.name, updated_at: definition.updated_at}
|
|
)
|
|
end
|
|
|
|
defp attr(attrs, key), do: Map.get(attrs, key) || Map.get(attrs, Atom.to_string(key))
|
|
end
|