lib/kvasir/compression/snappy.ex
defmodule Kvasir.Compression.Snappy do
defmacro compress(data, _opts) do
ensure_snappy!()
quote do
:snappyer.compress(unquote(data))
end
end
defmacro decompress(data, _opts) do
ensure_snappy!()
quote do
:snappyer.decompress(unquote(data))
end
end
require Logger
defp ensure_snappy! do
unless CodeX.ensure_compiled?(:zstd) do
Logger.error(fn ->
"""
Missing `:snappyer` required for Snappy compression.
Include `{:snappyer, "~> 1.2"}` in your `mix.exs` dependencies
to enable Snappy compression support.
"""
end)
end
:ok
end
end