Guest User

Untitled

a guest
Jul 12th, 2018
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Erlang 2.09 KB | None | 0 0
  1. %% ================================================================
  2. %% Encoding from sql.
  3. %% ================================================================
  4.  
  5. % Assuming exactly one sql result.  The function clause is meant to
  6. % take the result from the two sql queries:
  7. %   select * from employee_table where employee_number = number;
  8. %   select * from credential_table where employee_number = number;
  9. from_sql_results({select, EmpColNames, [EmpRow | _]}, {select, CredColNames, CredRows}) ->
  10.     EmpProps = lists:zip(EmpColNames, tuple_to_list(EmpRow)),
  11.     CredProps = [
  12.         lists:zip(CredColNames, tuple_to_list(CredRow)) ||
  13.         CredRow <- CredRows
  14.     ],
  15.     Credentials = credentials_from_proplists(CredProps),
  16.     EmpProps0 = [{"credentials", Credentials} | EmpProps],
  17.  
  18.     employee_from_proplist(EmpProps0).
  19.  
  20. employee_from_proplist(Props) ->
  21.     IsAwesome = case proplists:get_value("is_awesome", Props) of
  22.         1 -> true;
  23.         _ -> false
  24.     end,
  25.    
  26.     #employee{
  27.         first_name = proplists:get_value("first_name", Props),
  28.         last_name = proplists:get_value("last_name", Props),
  29.         employee_number = proplists:get_value("employee_number", Props),
  30.         hire_date = convert_time(proplists:get_value("hire_date", Props)),
  31.         is_awesome = IsAwesome,
  32.         credentials = proplists:get_value("credentials", Props)
  33.     }.
  34.  
  35. credentials_from_proplists(Props) ->
  36.     credentials_from_proplists(Props, []).
  37.  
  38. credentials_from_proplists([], Acc) ->
  39.     lists:sort(Acc);
  40.  
  41. credentials_from_proplists([Props | Tail], Acc) ->
  42.     Cred = #credential{
  43.         username = proplists:get_value("username", Props),
  44.         password = proplists:get_value("password", Props),
  45.         service = proplists:get_value("service", Props)
  46.     },
  47.     Acc0 = [Cred | Acc],
  48.     credentials_from_proplists(Tail, Acc0).
  49.  
  50. get_fake_sql_results() ->
  51.     Emps = {select, ["employee_number", "first_name", "last_name",
  52.         "hire_date", "is_awesome"], [
  53.             {8675309, "Jenny", "McEmployee", "2012-03-20 14:23:32", 1}
  54.         ]
  55.     },
  56.     Cres = {select, ["employee_number", "service", "username", "password"], [
  57.         {8675309, "unicall", "jmcemp", "uber1337"},
  58.         {8675309, "uaf", "jmcemp", "1234pass5678"}
  59.     ]},
  60.     {Emps, Cres}.
Add Comment
Please, Sign In to add comment