summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle/query/btl_join.erl31
-rw-r--r--src/shared/struct/shr_db_user.erl5
-rw-r--r--src/special/spe_map.erl31
3 files changed, 50 insertions, 17 deletions
diff --git a/src/battle/query/btl_join.erl b/src/battle/query/btl_join.erl
index 8ecb609..7b8a124 100644
--- a/src/battle/query/btl_join.erl
+++ b/src/battle/query/btl_join.erl
@@ -63,7 +63,7 @@ parse_input (Req) ->
end,
Roster = maps:get(<<"r">>, JSONReqMap),
- MapID = maps:get(<<"map_id">>, JSONReqMap),
+ MapID = maps:get(<<"map_id">>, JSONReqMap),
#input
{
@@ -87,6 +87,33 @@ authenticate_user (Input) ->
_ -> error
end.
+-spec handle_new_attack (input()) -> query_state().
+handle_new_attack (Input) ->
+ PlayerID = <<"">>,
+ PlayerDBUser = shr_db_user:player(PlayerID),
+ PartySize = 8,
+ DBCond =
+ recl:ge
+ (
+ recl:on_field
+ (
+ btl_builder:get_free_slots_field(),
+ [recl:current_value()]
+ ),
+ recl:constant(PartySize)
+ ),
+
+ TempLockQuery =
+ shr_db_query:first_match
+ (
+ db_name,
+ PlayerDBUser,
+ DBCond,
+ shr_db_query:temporary_lock(PlayerDBUser)
+ ),
+
+ %% Need: find[lone]; update; fetch
+
-spec fetch_data (input()) -> query_state().
fetch_data (Input) ->
PlayerID = Input#input.player_id,
@@ -110,9 +137,7 @@ handle (Req) ->
Input = parse_input(Req),
case authenticate_user(Input) of
ok ->
- shr_security:lock_queries(Input#input.player_id),
QueryState = fetch_data(Input),
- shr_security:unlock_queries(Input#input.player_id),
generate_reply(QueryState, Input);
error -> jiffy:encode([shr_disconnected:generate()])
diff --git a/src/shared/struct/shr_db_user.erl b/src/shared/struct/shr_db_user.erl
index 8368024..dcd8685 100644
--- a/src/shared/struct/shr_db_user.erl
+++ b/src/shared/struct/shr_db_user.erl
@@ -15,7 +15,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-export_type([user/0, permission/0]).
--export([can_access/2]).
+-export([can_access/2, player/1]).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -24,6 +24,9 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec player (shr_player:id()) -> db_user().
+player (ID) -> {user, ID}.
+
-spec can_access (permission(), user()) -> boolean().
can_access (_, admin) -> true;
can_access (any, _) -> true;
diff --git a/src/special/spe_map.erl b/src/special/spe_map.erl
index 418d6b5..94075d9 100644
--- a/src/special/spe_map.erl
+++ b/src/special/spe_map.erl
@@ -16,35 +16,40 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec grant_additional (binary()) -> map_map:type().
+-spec grant_additional (ataxia_id:type()) -> map_map:type().
grant_additional (OwnerID) ->
Map = map_map:default(OwnerID),
{ok, MapID} =
- shr_database:insert
+ ataxia_client:add
(
map_db,
- any,
- [{user, OwnerID}],
+ ataxia_security:any(),
+ [ataxia_security:user_from_id(OwnerID)],
Map
),
MapSummary = shr_map_summary:new(MapID, <<"Untitled Map">>),
- PlayerUpdateQueryOps =
- [
- shr_db_query:add_to_field
+ PlayerUpdateQueryOp =
+ ataxic:on_field
+ (
+ shr_player:get_map_summaries_field(),
+ ataxic:apply_function
(
- shr_player:get_map_summaries_field(),
- [MapSummary],
- false
+ lists,
+ append,
+ [ataxic:constant([MapSummary]), ataxic:current_value()]
)
- ],
+ ),
ok =
- shr_database:commit
+ ataxia_client:update
(
- shr_db_query:new(player_db, OwnerID, admin, PlayerUpdateQueryOps)
+ player_db,
+ ataxia_security:admin(),
+ PlayerUpdateQueryOp,
+ OwnerID
),
Map.