Packages
snakepit
0.4.1
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/bridge/variables.ex
defmodule Snakepit.Bridge.Variables do
@moduledoc """
Main entry point for variable-related functionality.
This module provides convenience functions and acts as the
public API for variable operations.
"""
alias Snakepit.Bridge.Variables.{Variable, Types}
@doc """
Lists all supported variable types.
"""
@spec supported_types() :: [atom()]
def supported_types do
Types.list_types()
end
@doc """
Validates a value against a type and constraints.
"""
@spec validate(any(), atom(), map()) :: {:ok, any()} | {:error, String.t()}
def validate(value, type, constraints \\ %{}) do
with {:ok, type_module} <- Types.get_type_module(type),
{:ok, validated} <- type_module.validate(value),
:ok <- type_module.validate_constraints(validated, constraints) do
{:ok, validated}
end
end
@doc """
Creates a properly typed variable.
"""
@spec create_variable(map()) :: {:ok, Variable.t()} | {:error, term()}
def create_variable(attrs) do
with {:ok, type_module} <- Types.get_type_module(attrs.type),
{:ok, validated_value} <- type_module.validate(attrs.value),
constraints = Map.get(attrs, :constraints, %{}),
:ok <- type_module.validate_constraints(validated_value, constraints) do
variable = Variable.new(Map.put(attrs, :value, validated_value))
{:ok, variable}
end
end
end