Current section
Files
Jump to
Current section
Files
lib/riak/timeseries.ex
defmodule Riak.Timeseries do
import Riak.Pool
defpool query(pid, query_text) when is_pid(pid) and is_binary(query_text) do
query_list = :erlang.binary_to_list(query_text)
case :riakc_ts.query(pid, query_list) do
{:ok, results} -> results;
err -> err
end
end
defpool put(pid, table, data) when is_pid(pid) and is_list(data)do
:riakc_ts.put(pid, table, data)
end
defpool get(pid, table, key) when is_pid(pid) and is_list(key) do
get(pid, table, key, [])
end
defpool get(pid, table, key, options) when is_pid(pid) and is_list(key) do
case :riakc_ts.get(pid, table, key, options) do
{:ok, results} -> results;
err -> err
end
end
defpool delete(pid, table, key) when is_pid(pid) and is_list(key) do
delete(pid, table, key, [])
end
defpool delete(pid, table, key, options) when is_pid(pid) and is_list(key) do
:riakc_ts.delete(pid, table, key, options)
end
defpool list!(pid, table) when is_pid(pid) do
list!(pid, table, [])
end
defpool list!(pid, table, options) when is_pid(pid) do
{:ok, req_id} = :riakc_ts.stream_list_keys(pid, table, options)
wait_for_list(req_id, [])
end
defp wait_for_list(req_id, acc) do
receive do
{^req_id, :done} -> List.flatten(acc)
{^req_id, {:error, reason}} -> {:error, reason}
{^req_id, {_, res}} -> wait_for_list(req_id, [res|acc])
end
end
end