Packages
pillar
0.18.2
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.0
0.34.1
0.34.0
0.33.1
0.33.0
0.32.0
0.31.0
0.30.0
0.29.1
0.29.0
0.28.0
0.27.0
0.26.1
0.26.0
0.25.1
0.25.0
0.24.0
0.23.3
0.23.2
0.23.1
0.23.0
0.22.0
0.21.0
0.20.0
0.19.0
0.18.2
0.18.1
0.18.0
0.17.3
0.17.2
0.17.1
0.17.0
0.16.2
0.16.1
0.16.0
0.15.0
0.14.0
0.13.1
0.13.0
0.12.0
0.11.0
0.10.0
0.9.1
0.9.0
0.8.1
0.8.0
0.7.0
0.6.0
0.5.1
0.5.0
0.4.0
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.0
Elixir client for ClickHouse, a fast open-source Online Analytical Processing (OLAP) database management system.
Current section
Files
Jump to
Current section
Files
lib/pillar/migrations/migrate.ex
defmodule Pillar.Migrations.Migrate do
@moduledoc false
alias Pillar
alias Pillar.Connection
alias Pillar.Migrations.Base
def run_all_migrations(%Connection{} = connection) do
:ok = Base.create_migration_history_table(connection)
files_and_modules = Base.compile_migration_files()
Enum.map(files_and_modules, fn {filename, module} ->
result = migrate_if_was_not_migrated(connection, filename, module.up)
{filename, result}
end)
end
def migrate_if_was_not_migrated(connection, migration_name, sql) do
{:ok, [%{"qty" => count}]} =
Pillar.select(
connection,
"SELECT COUNT(*) as qty FROM pillar_migrations WHERE migration = {name}",
%{
"name" => migration_name
}
)
case count do
0 ->
{:ok, _} = Pillar.query(connection, sql)
{:ok, _} =
Pillar.insert(connection, "INSERT INTO pillar_migrations (migration) SELECT {name}", %{
name: migration_name
})
:migrated
_ ->
:already_up
end
end
end