mirror of
https://github.com/livebook-dev/livebook.git
synced 2025-10-29 06:46:03 +08:00
50 lines
1.4 KiB
Elixir
50 lines
1.4 KiB
Elixir
defmodule Livebook.Migration do
|
|
@moduledoc false
|
|
|
|
@doc """
|
|
Runs all migrations.
|
|
"""
|
|
@spec migrate() :: :ok
|
|
def migrate() do
|
|
delete_local_host_hub()
|
|
insert_personal_hub()
|
|
move_app_secrets_to_personal_hub()
|
|
add_personal_hub_secret_key()
|
|
end
|
|
|
|
defp delete_local_host_hub() do
|
|
Livebook.Storage.delete(:hubs, "local-host")
|
|
end
|
|
|
|
defp insert_personal_hub() do
|
|
unless Livebook.Hubs.hub_exists?(Livebook.Hubs.Personal.id()) do
|
|
Livebook.Hubs.save_hub(%Livebook.Hubs.Personal{
|
|
id: Livebook.Hubs.Personal.id(),
|
|
hub_name: "My Hub",
|
|
hub_emoji: "🏠",
|
|
secret_key: Livebook.Hubs.Personal.generate_secret_key()
|
|
})
|
|
end
|
|
end
|
|
|
|
defp move_app_secrets_to_personal_hub() do
|
|
for %{name: name, value: value} <- Livebook.Storage.all(:secrets) do
|
|
secret = %Livebook.Secrets.Secret{
|
|
name: name,
|
|
value: value,
|
|
hub_id: Livebook.Hubs.Personal.id(),
|
|
readonly: false
|
|
}
|
|
|
|
Livebook.Secrets.set_secret(secret)
|
|
Livebook.Storage.delete(:secrets, name)
|
|
end
|
|
end
|
|
|
|
defp add_personal_hub_secret_key() do
|
|
with :error <- Livebook.Storage.fetch_key(:hubs, Livebook.Hubs.Personal.id(), :secret_key) do
|
|
secret_key = Livebook.Hubs.Personal.generate_secret_key()
|
|
Livebook.Storage.insert(:hubs, Livebook.Hubs.Personal.id(), secret_key: secret_key)
|
|
end
|
|
end
|
|
end
|