summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2018-10-03 18:02:03 +0200
committernsensfel <SpamShield0@noot-noot.org>2018-10-03 18:02:03 +0200
commit0d8e11193bf166758c2d9c46190b07b9b76f2958 (patch)
tree5c09229233c0aed54738facfe4946195bc0ae0a8 /src/special/spe_player.erl
parent00274059ed4db5b0f2be088b0098e376d836f6d2 (diff)
(Broken) still working on it...
Diffstat (limited to 'src/special/spe_player.erl')
-rw-r--r--src/special/spe_player.erl70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/special/spe_player.erl b/src/special/spe_player.erl
new file mode 100644
index 0000000..9cf3fea
--- /dev/null
+++ b/src/special/spe_player.erl
@@ -0,0 +1,70 @@
+-module(spe_player).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-export([generate/3]).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec generate (binary(), binary(), binary()) -> shr_player:type().
+generate (Username, Password, Email) ->
+ UsernameLC = string:lowercase(Username),
+ EmailLC = string:lowercase(Email),
+
+ shr_janitor:new(login_db, UsernameLC),
+ shr_janitor:new(login_db, EmailLC),
+
+ ok = shr_database:reserve(login_db, UsernameLC, janitor),
+ ok = shr_database:reserve(login_db, EmailLC, janitor),
+
+ Player = shr_player:new(<<"">>, Username, Password, Email),
+
+ {ok, PlayerID} = shr_database:insert(player_db, janitor, janitor, Player),
+
+ shr_janitor:new(player_db, PlayerID),
+
+ LoginUpdateQueryOps =
+ [
+ shr_db_query:set_value(PlayerID),
+ shr_db_query:set_read_permission(any),
+ shr_db_query:set_write_permission([{user, PlayerID}])
+ ],
+
+ PlayerUpdateQueryOps =
+ [
+ shr_db_query:set_field(shr_player:get_id_field(), PlayerID),
+ shr_db_query:set_read_permission(any),
+ shr_db_query:set_write_permission([{user, PlayerID}])
+ ],
+
+ ok =
+ shr_database:commit
+ (
+ shr_db_query:new(login_db, UsernameLC, janitor, LoginUpdateQueryOps)
+ ),
+
+ ok =
+ shr_database:commit
+ (
+ shr_db_query:new(login_db, EmailLC, janitor, LoginUpdateQueryOps)
+ ),
+
+ ok =
+ shr_database:commit
+ (
+ shr_db_query:new(player_db, PlayerID, janitor, PlayerUpdateQueryOps)
+ ),
+
+ Result = shr_player:set_id(PlayerID, Player),
+
+ Result.