Packages
pillar
0.28.0
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/base.ex
defmodule Pillar.Migrations.Base do
@moduledoc false
alias Pillar
alias Pillar.Connection
def compile_migration_files(path) do
path
|> File.ls!()
|> Enum.sort()
|> Enum.reject(fn filename -> filename == ".formatter.exs" end)
|> Enum.map(fn filename ->
module_name = file_name_to_module(filename)
if Kernel.function_exported?(module_name, :up, 0) do
{filename, module_name}
else
migration_path = Path.join(path, filename)
[{module, _binary}] = Code.compile_file(migration_path)
{filename, module}
end
end)
end
def create_migration_history_table(%Connection{} = connection) do
sql = """
CREATE TABLE IF NOT EXISTS pillar_migrations (
migration String,
inserted_at DateTime DEFAULT now()
) ENGINE = MergeTree()
ORDER BY inserted_at
"""
{:ok, _} = Pillar.query(connection, sql)
:ok
end
defp file_name_to_module(filename) do
name =
filename
|> String.replace(~r/\d+_(.*).exs/, "\\1")
|> String.capitalize()
"Elixir.Pillar.Migrations."
|> Kernel.<>(name)
|> String.to_atom()
end
end