Skip to content

Commit 5d480bf

Browse files
authored
fix: use correct key format for listing name owner tables (#688)
1 parent 044a7af commit 5d480bf

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

lib/ae_mdw/names.ex

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,21 +101,23 @@ defmodule AeMdw.Names do
101101

102102
defp build_name_streamer(%{owned_by: owner_pk, state: "active"}, cursor) do
103103
cursor = if cursor, do: {owner_pk, cursor}
104+
scope = {{owner_pk, Util.min_bin()}, {owner_pk, Util.max_256bit_bin()}}
104105

105106
fn direction ->
106107
@table_active_owner
107-
|> Collection.stream(direction, nil, cursor)
108-
|> Stream.map(fn key -> {key, :active} end)
108+
|> Collection.stream(direction, scope, cursor)
109+
|> Stream.map(fn {_owner_pk, plain_name} -> {plain_name, :active} end)
109110
end
110111
end
111112

112113
defp build_name_streamer(%{owned_by: owner_pk, state: "inactive"}, cursor) do
113114
cursor = if cursor, do: {owner_pk, cursor}
115+
scope = {{owner_pk, Util.min_bin()}, {owner_pk, Util.max_256bit_bin()}}
114116

115117
fn direction ->
116118
@table_inactive_owner
117-
|> Collection.stream(direction, nil, cursor)
118-
|> Stream.map(fn key -> {key, :inactive} end)
119+
|> Collection.stream(direction, scope, cursor)
120+
|> Stream.map(fn {_owner_pk, plain_name} -> {plain_name, :inactive} end)
119121
end
120122
end
121123

test/integration/ae_mdw_web/controllers/name_controller_test.exs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -636,6 +636,22 @@ defmodule Integration.AeMdwWeb.NameControllerTest do
636636
assert ^plain_names = Enum.sort(plain_names)
637637
end
638638

639+
test "when filtering by owned_by, it returns names owned by that owner", %{conn: conn} do
640+
# first, retrieve any name to get the owner
641+
assert %{"data" => [%{"info" => %{"ownership" => %{"current" => owner_pk}}} | _rest]} =
642+
conn |> get("/v2/names", state: "active", limit: 1) |> json_response(200)
643+
644+
assert %{"data" => names} =
645+
conn
646+
|> get("/v2/names", state: "active", by: "name", owned_by: owner_pk, limit: 3)
647+
|> json_response(200)
648+
649+
assert Enum.all?(
650+
names,
651+
&match?(%{"info" => %{"ownership" => %{"current" => ^owner_pk}}}, &1)
652+
)
653+
end
654+
639655
test "renders error when parameter by is invalid", %{conn: conn} do
640656
by = "invalid_by"
641657
error_msg = "invalid query: by=#{by}"

0 commit comments

Comments
 (0)