Current section
Files
Jump to
Current section
Files
lib/hbasex.ex
defmodule Hbasex do
alias Hbasex.Models.{TGet, TColumn, TColumnValue, TPut, TScan}
def start_link(host, port) do
Hbasex.Client.start_link(host, port)
end
defp get_t_column(column) do
[family, qualifier] = String.split(column, ":")
TColumn.new(family: family, qualifier: qualifier)
end
defp get_t_column_value(column, value) do
[family, qualifier] = String.split(column, ":")
TColumnValue.new(family: family, qualifier: qualifier, value: value)
end
defp get_t_put(row, map) do
column_values = for {column, value} <- map do
get_t_column_value(column, value)
end
TPut.new(attributes: :dict.new(), row: row, columnValues: column_values)
end
defp get_t_scan() do
TScan.new(attributes: :dict.new())
end
def get(client_pid, table_name, row, columns \\ []) do
tcolumns = for column <- columns, do: get_t_column(column)
tget = TGet.new(attributes: :dict.new(), row: row, columns: tcolumns)
result = Hbasex.Client.get(client_pid, table_name, tget)
Enum.reduce(result.columnValues, %{}, fn(x, acc) ->
column_name = x.family <> ":" <> x.qualifier
Map.put(acc, column_name, x.value)
end)
end
def put(client_pid, table_name, row, map) do
Hbasex.Client.put(client_pid, table_name, get_t_put(row, map))
end
def scan(client_pid, table_name, nb_rows) do
Hbasex.Client.getScannerResults(client_pid, table_name, get_t_scan(), nb_rows)
end
end