Packages
krug
0.4.5
2.0.36
2.0.35
2.0.34
2.0.33
2.0.32
2.0.31
2.0.30
2.0.29
2.0.27
2.0.26
2.0.25
2.0.24
2.0.23
2.0.22
2.0.20
2.0.19
2.0.18
2.0.17
2.0.16
2.0.15
2.0.14
2.0.13
2.0.12
2.0.11
2.0.10
2.0.9
2.0.8
2.0.7
2.0.6
2.0.5
2.0.4
2.0.1
2.0.0
1.1.53
1.1.52
1.1.50
1.1.49
1.1.48
1.1.47
1.1.46
1.1.45
1.1.44
1.1.43
1.1.42
1.1.41
1.1.40
1.1.39
1.1.38
1.1.37
1.1.36
1.1.35
1.1.34
1.1.33
1.1.32
1.1.31
1.1.30
1.1.29
1.1.28
1.1.27
1.1.26
1.1.25
1.1.24
1.1.23
1.1.22
1.1.21
1.1.20
1.1.19
1.1.18
1.1.17
1.1.16
1.1.15
1.1.14
1.1.12
1.1.10
1.1.9
1.1.8
1.1.7
1.1.6
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.9
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.31
0.4.30
0.4.29
0.4.28
0.4.27
0.4.26
0.4.25
0.4.24
0.4.23
0.4.22
0.4.20
0.4.19
0.4.18
0.4.17
0.4.16
0.4.15
0.4.14
0.4.13
0.4.12
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.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.0
A Utilitary package functionalities modules for improve a secure performatic development.
Current section
Files
Jump to
Current section
Files
lib/krug/ecto/resultset.handler.ex
defmodule Krug.ResultSetHandler do
@moduledoc """
Module to handle the resultset returned by ```Krug.BaseEctoDAO``` (extended modules) load function.
"""
@moduledoc since: "0.2.0"
alias Krug.StringUtil
@doc """
Concat the value of column ```col``` of all rows of resultset.
Return a string with values delimited with comma char.
- Supose that was load a result as follow:
```elixir
%MyXQL.Result{
columns: ["id", "name", "email", "age", "address"],
connection_id: 1515,
last_insert_id: 0,
num_rows: 1,
num_warnings: 0,
rows: [
[1,"Johannes Backend","johannes@backend.com",54,"404 street"],
[2,"Peter Druggking","peter@thedrugger.com",23,"404 street"],
[3,"Josephine Frontfull","josephine@staline.com",34,"404 street"]
]
}
```
```elixir
iex > Krug.ResultSetHandler.concat_cols_of_result_rows(resultset,0)
"1,2,3"
```
```elixir
iex > Krug.ResultSetHandler.concat_cols_of_result_rows(resultset,1)
"Johannes Backend,Peter Druggking,Josephine Frontfull"
```
```elixir
iex > Krug.ResultSetHandler.concat_cols_of_result_rows(resultset,2)
"johannes@backend.com,peter@thedrugger.com,josephine@staline.com"
```
```elixir
iex > Krug.ResultSetHandler.concat_cols_of_result_rows(resultset,3)
"54,23,34"
```
"""
def concat_cols_of_result_rows(resultset,col) do
get_column_values_concat("",resultset,0,col)
end
@doc """
Obtain the value of a column ```col``` of a row ```row``` of resultset.
Return a empty string if value is nil.
- Supose that was load a result as follow:
```elixir
%MyXQL.Result{
columns: ["id", "name", "email", "age", "popularitypercent", "address"],
connection_id: 1515,
last_insert_id: 0,
num_rows: 1,
num_warnings: 0,
rows: [
[1,"Johannes Backend","johannes@backend.com",54,95.7,"404 street"],
[2,"Peter Druggking","peter@thedrugger.com",23,66.6,"404 street"],
[3,"Josephine Frontfull","josephine@staline.com",34,17.3,"404 street"]
]
}
```
And you want transform it to a pretty map array as [%{},%{},%{}], then
you could iterate recursively the resultset, making some as this for each row:
```elixir
%{
id: Krug.ResultSetHandler.get_column_value(resultset,row,0) |> Krug.NumberUtil.to_integer(),
name: Krug.ResultSetHandler.get_column_value(resultset,row,1),
email: Krug.ResultSetHandler.get_column_value(resultset,row,2),
age: Krug.ResultSetHandler.get_column_value(resultset,row,3) |> Krug.NumberUtil.to_integer(),
popularitypercent: Krug.ResultSetHandler.get_column_value(resultset,row,4) |> Krug.NumberUtil.to_float(),
address: Krug.ResultSetHandler.get_column_value(resultset,row,5)
}
```
"""
def get_column_value(resultset,row,col) do
array_data = get_row_as_array(resultset,row)
value = cond do
(nil == array_data or length(array_data) == 0) -> ""
(nil == col or !(col >= 0) or col >= length(array_data)) -> ""
true -> array_data |> Enum.at(col)
end
"#{value}"
end
defp get_row_as_array(resultset,row) do
cond do
(nil == resultset or nil == resultset.rows) -> nil
(nil == row or !(row >= 0)) -> nil
(nil == resultset.rows or length(resultset.rows) == 0) -> nil
(row >= length(resultset.rows)) -> nil
true -> resultset.rows |> Enum.at(row)
end
end
defp get_column_values_concat(string,resultset,row,col) do
value = get_column_value_use_nil(resultset,row,col)
cond do
(nil == value) -> string |> get_column_values_concat(resultset,row + 1,col)
true -> string |> StringUtil.concat(value,",") |> get_column_values_concat(resultset,row + 1,col)
end
end
defp get_column_value_use_nil(resultset,row,col) do
array_data = get_row_as_array(resultset,row)
cond do
(nil == array_data or length(array_data) == 0) -> nil
(nil == col or !(col >= 0) or col >= length(array_data)) -> nil
true -> array_data |> Enum.at(col)
end
end
end