Подтвердить что ты не робот

Утверждать размер списка в эликсире

Я хотел бы утверждать размер списка. В настоящее время я делаю это следующим образом:

assert devices = Repo.all from d in device, where d.uuid == ^attrs.uuid
assert devices.first == devices.last

Есть ли лучший способ сделать это?

4b9b3361

Ответ 1

Kernel.length/1 вернет размер списка:

length([1,2,3]) #3

Вы можете сделать это из запроса Ecto, используя:

query = from d in Device, where: d.uuid == ^uuid, select: fragment("count(?)", d.id)
assert  Repo.all(query)== 3

В Ecto 2 вы можете использовать Repo.aggregate/4

query = from d in Device, where: d.uuid == ^uuid)
assert Repo.aggregate(query, :count, :id) == 3