Packages
snakepit
0.6.4
0.13.0
0.12.0
0.11.1
0.11.0
0.10.1
0.10.0
0.9.1
0.9.0
0.8.9
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.11
0.6.10
0.6.9
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.2
0.1.1
0.1.0
High-performance pooler and session manager for external language integrations. Supports Python, Node.js, Ruby, and more with gRPC streaming, session management, and production-ready process cleanup.
Current section
Files
Jump to
Current section
Files
lib/snakepit/utils.ex
defmodule Snakepit.Utils do
@moduledoc """
Utility functions for Snakepit.
This module contains common helper functions used across the Snakepit codebase
to avoid code duplication and provide consistent behavior.
"""
@doc """
Recursively converts atom keys to string keys in maps and lists.
This is useful when preparing data for JSON serialization where all keys
need to be strings.
## Examples
iex> Snakepit.Utils.stringify_keys(%{foo: "bar", baz: %{nested: "value"}})
%{"foo" => "bar", "baz" => %{"nested" => "value"}}
iex> Snakepit.Utils.stringify_keys([%{key: "value"}, %{another: "test"}])
[%{"key" => "value"}, %{"another" => "test"}]
iex> Snakepit.Utils.stringify_keys("already_string")
"already_string"
"""
@spec stringify_keys(any()) :: any()
def stringify_keys(map) when is_map(map) do
Map.new(map, fn
{k, v} when is_atom(k) -> {Atom.to_string(k), stringify_keys(v)}
{k, v} -> {k, stringify_keys(v)}
end)
end
def stringify_keys(list) when is_list(list) do
Enum.map(list, &stringify_keys/1)
end
def stringify_keys(value), do: value
end