Packages
ex_aws
0.4.9
2.7.0
2.6.1
2.6.0
2.5.11
2.5.10
2.5.9
2.5.8
2.5.7
2.5.6
2.5.5
2.5.4
2.5.3
2.5.2
2.5.1
2.5.0
2.4.4
2.4.3
2.4.2
2.4.1
2.4.0
2.3.4
2.3.3
2.3.2
2.3.1
2.3.0
2.2.10
2.2.9
2.2.8
2.2.7
2.2.6
2.2.5
2.2.4
2.2.3
2.2.2
2.2.1
2.2.0
2.1.9
2.1.8
2.1.7
2.1.6
2.1.5
2.1.4
2.1.3
2.1.2
2.1.1
2.1.0
2.0.2
2.0.1
2.0.0
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.0
1.0.0-rc.4
1.0.0-rc.3
1.0.0-rc.1
1.0.0-beta3
1.0.0-beta2
1.0.0-beta1
1.0.0-beta0
0.5.0
0.4.19
0.4.18
0.4.17
0.4.15
0.4.14
0.4.13
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.1
0.3.0
0.2.0
0.1.2
0.1.1
0.1.0
0.0.5
0.0.4
0.0.3
AWS client for Elixir. Currently supports Dynamo, DynamoStreams, EC2, Firehose, Kinesis, KMS, Lambda, RRDS, Route53, S3, SES, SNS, SQS, STS and others.
Current section
Files
Jump to
Current section
Files
lib/ex_aws/dynamo/lazy.ex
defmodule ExAws.Dynamo.Lazy do
@moduledoc false
## Implimentation of the lazy functions surfaced by ExAws.Dynamo.Client
@doc "Generates a scan stream"
def stream_scan(client, table, opts \\ []) do
request_fun = fn fun_opts ->
ExAws.Dynamo.Impl.scan(client, table, Keyword.merge(opts, fun_opts))
end
build_request_stream(request_fun)
end
defp build_request_stream(request_fun) do
Stream.resource(fn -> {request_fun, []} end, fn
:quit -> {:halt, nil}
{fun, args} -> case fun.(args) do
{:ok, %{"Items" => items, "LastEvaluatedKey" => key}} ->
{items, {fun, [exclusive_start_key: key]}}
{:ok, %{"Items" => items}} ->
{items, :quit}
end
end, &pass/1)
end
@doc "Generates a query stream"
def stream_query(client, table, opts \\ []) do
request_fun = fn fun_opts ->
ExAws.Dynamo.Impl.query(client, table, Keyword.merge(opts, fun_opts))
end
build_request_stream(request_fun)
end
defp pass(val), do: val
end