Current section
Files
Jump to
Current section
Files
lib/litestream/strategy/tigris.ex
defmodule Litestream.Strategy.Tigris do
@moduledoc """
Use this strategy for backing up your SQLite DB file to
Fly's Tigris Object storage.
"""
alias __MODULE__
alias Litestream.Replicator
@type t :: %Tigris{
access_key_id: String.t(),
secret_access_key: String.t(),
bucket: String.t()
}
@keys [:access_key_id, :secret_access_key, :bucket]
@enforce_keys @keys
defstruct @keys
defimpl Replicator do
def env_vars(%Tigris{access_key_id: access_key_id, secret_access_key: secret_access_key}) do
[
{"AWS_ACCESS_KEY_ID", access_key_id},
{"AWS_SECRET_ACCESS_KEY", secret_access_key}
]
end
def cli_args(%Tigris{bucket: bucket}, database) do
uri = %URI{
scheme: "s3",
host: bucket,
query: [
region: "auto",
endpoint: "fly.storage.tigris.dev"
]
}
[database, URI.to_string(uri)]
end
def temp_file_contents(_struct, _database) do
nil
end
end
end