mirror of
https://github.com/livebook-dev/livebook.git
synced 2025-09-08 05:54:20 +08:00
41 lines
1.1 KiB
Elixir
41 lines
1.1 KiB
Elixir
defmodule Livebook.Secrets do
|
|
# Shared secret functionality across all hubs.
|
|
|
|
alias Livebook.Secrets.Secret
|
|
|
|
@doc """
|
|
Returns an `%Ecto.Changeset{}` for tracking secret changes.
|
|
"""
|
|
@spec change_secret(Secret.t(), map()) :: Ecto.Changeset.t()
|
|
def change_secret(%Secret{} = secret, attrs) do
|
|
Secret.changeset(secret, attrs)
|
|
end
|
|
|
|
@doc """
|
|
Updates secret with the given changes.
|
|
"""
|
|
@spec update_secret(Secret.t(), map()) :: {:ok, Secret.t()} | {:error, Ecto.Changeset.t()}
|
|
def update_secret(%Secret{} = secret, attrs) do
|
|
secret
|
|
|> Secret.changeset(attrs)
|
|
|> Ecto.Changeset.apply_action(:update)
|
|
end
|
|
|
|
@secret_startup_key :livebook_startup_secrets
|
|
|
|
@doc """
|
|
Get the startup secrets list from persistent term.
|
|
"""
|
|
@spec get_startup_secrets() :: list(Secret.t())
|
|
def get_startup_secrets do
|
|
:persistent_term.get(@secret_startup_key, [])
|
|
end
|
|
|
|
@doc """
|
|
Sets additional secrets that are kept only in memory.
|
|
"""
|
|
@spec set_startup_secrets(list(Secret.t())) :: :ok
|
|
def set_startup_secrets(secrets) do
|
|
:persistent_term.put(@secret_startup_key, secrets)
|
|
end
|
|
end
|