Merge pull request #479 from FarmBot/staging
Recovery release to fix FarmEvents not working without a sync.pull/489/head v6.3.1
commit
acc22702af
|
@ -1,2 +1,2 @@
|
|||
erlang 20.3.1
|
||||
elixir 1.6.3
|
||||
erlang 20.2
|
||||
elixir 1.6.4
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
# 6.3.1
|
||||
* Fix bug causing FarmEvents not to work.
|
||||
|
||||
# 6.3.0
|
||||
* Update system update system.
|
||||
* Rename and refactor external resources internally so they are more readable in the codebase.
|
||||
|
|
|
@ -36,7 +36,7 @@ config :farmbot, Farmbot.Repo.A,
|
|||
config :farmbot, Farmbot.Repo.B,
|
||||
adapter: Sqlite.Ecto2,
|
||||
loggers: [],
|
||||
database: "tmp/#{Farmbot.Repo.A}_dev.sqlite3",
|
||||
database: "tmp/#{Farmbot.Repo.B}_dev.sqlite3",
|
||||
pool_size: 1
|
||||
|
||||
config :farmbot, Farmbot.System.ConfigStorage,
|
||||
|
|
|
@ -18,6 +18,7 @@ defmodule Farmbot.System.Init.Ecto do
|
|||
repos = Application.get_env(:farmbot, :ecto_repos)
|
||||
|
||||
for repo <- repos do
|
||||
Application.put_env(:farmbot, :repo_hack, repo)
|
||||
setup(repo)
|
||||
end
|
||||
end
|
||||
|
@ -50,8 +51,10 @@ defmodule Farmbot.System.Init.Ecto do
|
|||
@doc "Replacement for Mix.Tasks.Ecto.Migrate"
|
||||
def migrate do
|
||||
repos = Application.get_env(:farmbot, :ecto_repos)
|
||||
Application.put_env(:farmbot, :repo_hack, nil)
|
||||
|
||||
for repo <- repos do
|
||||
Application.put_env(:farmbot, :repo_hack, repo)
|
||||
# setup(repo)
|
||||
migrate(repo)
|
||||
end
|
||||
|
@ -62,24 +65,14 @@ defmodule Farmbot.System.Init.Ecto do
|
|||
{:ok, pid, apps} = Mix.Ecto.ensure_started(repo, opts)
|
||||
|
||||
migrator = &Ecto.Migrator.run/4
|
||||
|
||||
migrations_path =
|
||||
(Application.get_env(:farmbot, repo)[:priv] ||
|
||||
Path.join(
|
||||
:code.priv_dir(:farmbot) |> to_string,
|
||||
Module.split(repo) |> List.last() |> Macro.underscore()
|
||||
))
|
||||
Path.join(
|
||||
:code.priv_dir(:farmbot) |> to_string,
|
||||
Module.split(repo) |> List.last() |> Macro.underscore()
|
||||
)
|
||||
|> Kernel.<>("/migrations")
|
||||
|
||||
pool = repo.config[:pool]
|
||||
|
||||
migrated =
|
||||
if function_exported?(pool, :unboxed_run, 2) do
|
||||
pool.unboxed_run(repo, fn -> migrator.(repo, migrations_path, :up, opts) end)
|
||||
else
|
||||
migrator.(repo, migrations_path, :up, opts)
|
||||
end
|
||||
|
||||
migrated = migrator.(repo, migrations_path, :up, opts)
|
||||
pid && repo.stop(pid)
|
||||
Mix.Ecto.restart_apps_if_migrated(apps, migrated)
|
||||
Process.sleep(500)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
defmodule Farmbot.Repo.A.Migrations.AddDevicesTable do
|
||||
defmodule Farmbot.Repo.Migrations.AddDevicesTable do
|
||||
use Ecto.Migration
|
||||
|
||||
def change do
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
defmodule Farmbot.Repo.A.Migrations.AddSensorsTable do
|
||||
defmodule Farmbot.Repo.Migrations.AddSensorsTable do
|
||||
use Ecto.Migration
|
||||
|
||||
def change do
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
defmodule Farmbot.Repo.Migrations.FixNamespaces do
|
||||
use Ecto.Migration
|
||||
import Ecto.Query
|
||||
|
||||
def change do
|
||||
repo = Application.get_env(:farmbot, :repo_hack)
|
||||
if repo do
|
||||
do_update(repo)
|
||||
else
|
||||
IO.puts "Not migrating."
|
||||
end
|
||||
end
|
||||
|
||||
defp do_update(repo) do
|
||||
fe_needs_change = repo.all(from e in Farmbot.Asset.FarmEvent)
|
||||
|> Enum.filter(fn(asset) ->
|
||||
String.contains?(asset.executable_type, "Repo")
|
||||
end)
|
||||
|
||||
fe_needs_change |> Enum.map(fn(a) ->
|
||||
String.split(a.executable_type, ".") |> List.last
|
||||
Ecto.Changeset.change(a, executable_type: String.split(a.executable_type, ".") |> List.last)
|
||||
end) |> Enum.map(fn(cs) -> repo.update!(cs) end)
|
||||
|> fn(updated) ->
|
||||
IO.puts "FarmEvents updated: #{Enum.count(updated)}\n\n\n"
|
||||
end.()
|
||||
|
||||
point_needs_change = repo.all(from p in Farmbot.Asset.Point)
|
||||
|> Enum.filter(fn(asset) ->
|
||||
String.contains?(asset.pointer_type, "Repo")
|
||||
end)
|
||||
|
||||
point_needs_change |> Enum.map(fn(a) ->
|
||||
String.split(a.pointer_type, ".") |> List.last
|
||||
Ecto.Changeset.change(a, pointer_type: String.split(a.pointer_type, ".") |> List.last)
|
||||
end) |> Enum.map(fn(cs) -> repo.update!(cs) end)
|
||||
|> fn(updated) ->
|
||||
IO.puts "Points updated: #{Enum.count(updated)}"
|
||||
end.()
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue