Add enigmas table / private asset

pull/974/head
Rick Carlino 2019-03-19 11:35:09 -05:00 committed by Connor Rigby
parent b25f8526bc
commit acf4de0671
No known key found for this signature in database
GPG Key ID: 29A88B24B70456E0
4 changed files with 52 additions and 0 deletions

1
.gitignore vendored
View File

@ -35,6 +35,7 @@ erl_crash.dump
*.js
/release-*
/node_modules
scratchpad.*
# Various env vars.
.env

View File

@ -0,0 +1,27 @@
defmodule FarmbotCore.Asset.Private.Enigma do
@moduledoc """
An Enigma is essentially a merge conflict-
it represents data that has two conflicting
forms in two different systems (eg: API vs. Bot)
and requires human intervention to rectify.
"""
alias FarmbotCore.Asset.Private.Enigma
use Ecto.Schema
@behaviour FarmbotCore.Asset.View
schema "enigmas" do
field(:priority, :integer)
field(:problem_tag, :string)
field(:created_at, :utc_datetime)
end
@doc false
def render(%Enigma{} = data) do
%{
priority: data.priority,
problem_tag: data.problem_tag,
created_at: DateTime.to_unix(data.utc_datetime)
}
end
end

View File

@ -21,6 +21,7 @@ defmodule FarmbotCore.BotStateNG do
field(:process_info, {:map, {:string, :any}}, default: %{farmwares: %{}})
field(:pins, {:map, {:integer, :map}}, default: %{})
field(:jobs, {:map, {:string, :map}}, default: %{})
field(:enigmas, {:map, {:string, :map}}, default: %{})
end
def new do
@ -101,4 +102,15 @@ defmodule FarmbotCore.BotStateNG do
put_change(cs, :jobs, new_jobs)
end
def set_enigma(state, %{uuid: uuid} = enigma) do
cs = changeset(state, %{})
new_enigmas =
cs
|> get_field(:enigmas)
|> Map.put(uuid, enigma)
put_change(cs, :enigmas, new_enigmas)
end
end

View File

@ -0,0 +1,12 @@
defmodule FarmbotCore.Config.Repo.Migrations.AddEnigmasTable do
use Ecto.Migration
def change do
create table("enigmas", primary_key: false) do
add(:uuid, :binary_id, primary_key: true)
add(:problem_tag, :string)
add(:priority, :integer)
add(:created_at, :utc_datetime)
end
end
end