Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %% ================================================================
- %% Encoding from sql.
- %% ================================================================
- % Assuming exactly one sql result. The function clause is meant to
- % take the result from the two sql queries:
- % select * from employee_table where employee_number = number;
- % select * from credential_table where employee_number = number;
- from_sql_results({select, EmpColNames, [EmpRow | _]}, {select, CredColNames, CredRows}) ->
- EmpProps = lists:zip(EmpColNames, tuple_to_list(EmpRow)),
- CredProps = [
- lists:zip(CredColNames, tuple_to_list(CredRow)) ||
- CredRow <- CredRows
- ],
- Credentials = credentials_from_proplists(CredProps),
- EmpProps0 = [{"credentials", Credentials} | EmpProps],
- employee_from_proplist(EmpProps0).
- employee_from_proplist(Props) ->
- IsAwesome = case proplists:get_value("is_awesome", Props) of
- 1 -> true;
- _ -> false
- end,
- #employee{
- first_name = proplists:get_value("first_name", Props),
- last_name = proplists:get_value("last_name", Props),
- employee_number = proplists:get_value("employee_number", Props),
- hire_date = convert_time(proplists:get_value("hire_date", Props)),
- is_awesome = IsAwesome,
- credentials = proplists:get_value("credentials", Props)
- }.
- credentials_from_proplists(Props) ->
- credentials_from_proplists(Props, []).
- credentials_from_proplists([], Acc) ->
- lists:sort(Acc);
- credentials_from_proplists([Props | Tail], Acc) ->
- Cred = #credential{
- username = proplists:get_value("username", Props),
- password = proplists:get_value("password", Props),
- service = proplists:get_value("service", Props)
- },
- Acc0 = [Cred | Acc],
- credentials_from_proplists(Tail, Acc0).
- get_fake_sql_results() ->
- Emps = {select, ["employee_number", "first_name", "last_name",
- "hire_date", "is_awesome"], [
- {8675309, "Jenny", "McEmployee", "2012-03-20 14:23:32", 1}
- ]
- },
- Cres = {select, ["employee_number", "service", "username", "password"], [
- {8675309, "unicall", "jmcemp", "uber1337"},
- {8675309, "uaf", "jmcemp", "1234pass5678"}
- ]},
- {Emps, Cres}.
Add Comment
Please, Sign In to add comment