Current section

37 Versions

Jump to

Compare versions

3 files changed
+36 additions
-7 deletions
  @@ -87,4 +87,4 @@
87 87 {<<"optional">>,false},
88 88 {<<"repository">>,<<"hexpm">>},
89 89 {<<"requirement">>,<<">= 3.0.0">>}]]}.
90 - {<<"version">>,<<"0.2.6">>}.
90 + {<<"version">>,<<"0.2.7">>}.
  @@ -157,25 +157,54 @@ defmodule MavuList do
157 157 |> Ecto.Query.order_by(^sort_definitions_for_query)
158 158 end
159 159
160 + if Code.ensure_loaded?(Ash) do
161 + def apply_sort(%Ash.Query{} = query, conf, sort_definitions)
162 + when is_list(sort_definitions) and is_map(conf) do
163 + sort_definitions_for_query =
164 + Enum.map(sort_definitions, &handle_sort_definition_for_ash(&1, conf))
165 +
166 + %{
167 + sort_definitions: sort_definitions,
168 + sort_definitions_for_query: sort_definitions_for_query
169 + }
170 +
171 + query
172 + |> Ash.Query.unset(:sort)
173 + |> Ash.Query.sort(sort_definitions_for_query)
174 + end
175 + end
176 +
160 177 def handle_sort_definition([colname, direction], conf) do
161 178 db_colname = get_db_colname(conf, colname)
162 179 {direction, db_colname}
163 180 end
164 181
165 - def apply_sort(data, _, _), do: data
182 + def handle_sort_definition_for_ash([colname, direction], conf) do
183 + db_colname = get_db_colname(conf, colname)
166 184
185 + case direction do
186 + :asc ->
187 + db_colname
188 +
189 + _ ->
190 + {db_colname, direction}
191 + end
192 + end
193 +
194 + def apply_sort(data, _, _), do: data
167 195
168 196 if Code.ensure_loaded?(Ash) do
169 197 def apply_paging(%Ash.Query{} = query, %{api: api} = _conf, per_page, page)
170 - when is_integer(per_page) and is_integer(page) do
198 + when is_integer(per_page) and is_integer(page) do
171 199 query
172 200 |> api.read!(page: [limit: per_page, offset: per_page * (page - 1)])
173 201 |> case do
174 - items when is_list(items)-> items
202 + items when is_list(items) -> items
175 203 %{results: items} -> items
176 204 end
177 205 end
178 206 end
207 +
179 208 def apply_paging(%Ecto.Query{} = query, %{repo: repo} = _conf, per_page, page)
180 209 when is_integer(per_page) and is_integer(page) do
181 210 query
  @@ -262,8 +291,8 @@ defmodule MavuList do
262 291
263 292 if Code.ensure_loaded?(Ash) do
264 293 def get_length(%Ash.Query{} = query, %{api: api} = _conf) do
265 - api.read!(query, page: [limit: 1,count: true])
266 - |> Map.get(:count,0)
294 + api.read!(query, page: [limit: 1, count: true])
295 + |> Map.get(:count, 0)
267 296 end
268 297 end
  @@ -1,7 +1,7 @@
1 1 defmodule MavuList.MixProject do
2 2 use Mix.Project
3 3
4 - @version "0.2.6"
4 + @version "0.2.7"
5 5 def project do
6 6 [
7 7 app: :mavu_list,