lib/kvasir/key/string.ex

defmodule Kvasir.Key.String do
  @moduledoc ~S"""
  String key is partitioned by summing the character values
  and modulo-ing them with the partitions.
  """
  use Kvasir.Key, type: Kvasir.Type.String

  @impl Kvasir.Key
  def partition(value, partitions),
    do: {:ok, value |> String.to_charlist() |> Enum.sum() |> rem(partitions)}
end