Maxim Sokhatsky 11 years ago
parent
commit
f82fc7cda2

+ 0 - 15
apps/db/include/game_event_container.hrl

@@ -1,15 +0,0 @@
--ifndef(GAME_EVENT_CONTAINER_HRL).
--define(GAME_EVENT_CONTAINER_HRL, "game_event_container.hrl").
-
--include_lib("kvs/include/kvs.hrl").
-
--record(game_event_container,
-        {
-          ?ITERATOR(feed),
-          game_id,
-          timestamp,
-          event,
-          game_event
-        }).
-
--endif.

+ 20 - 0
apps/db/include/game_log.hrl

@@ -0,0 +1,20 @@
+-ifndef(GAME_LOG_HRL).
+-define(GAME_LOG_HRL, "game_log.hrl").
+
+-include_lib("kvs/include/kvs.hrl").
+
+-record(event_log, {?ITERATOR(feed),
+    game_id,
+    timestamp,
+    user,
+    event,
+    game_event}).
+
+-record(game_log, {?ITERATOR(feed),
+    game_type,
+    game_id,
+    user,
+    aggregations % [{attach,Count},{join,Count},{}]
+    }).
+
+-endif.

+ 0 - 9
apps/db/src/db_game_event_container.erl

@@ -1,9 +0,0 @@
--module(db_game_event_container).
--include_lib("kvs/include/metainfo.hrl").
--include_lib("db/include/game_event_container.hrl").
--compile(export_all).
-
-metainfo() ->
-    #schema{name=kvs,tables=[
-        #table{name=game_event_container,fields=record_info(fields,game_event_container), keys=[game_id, event]}
-    ]}.

+ 10 - 0
apps/db/src/db_game_log.erl

@@ -0,0 +1,10 @@
+-module(db_game_log).
+-include_lib("kvs/include/metainfo.hrl").
+-include_lib("db/include/game_log.hrl").
+-compile(export_all).
+
+metainfo() ->
+    #schema{name=kvs,tables=[
+        #table{name=game_log,fields=record_info(fields,game_log)},
+        #table{name=event_log,fields=record_info(fields,event_log)}
+    ]}.

+ 46 - 0
apps/server/src/game_log.erl

@@ -0,0 +1,46 @@
+-module(game_log).
+-author("Dayneko Roman <me@h0.org.ua>").
+-copyright("Kakaranet").
+-behaviour(gen_server).
+-include_lib("kvs/include/kvs.hrl").
+-include_lib("db/include/game_log.hrl").
+-include_lib("server/include/requests.hrl").
+-compile(export_all).
+-export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]).
+-define(SERVER, ?MODULE).
+-record(state, {history = []}).
+
+start_link() -> gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).
+mypid() -> gen_server:call(?SERVER, mypid).
+clear_history() -> gen_server:cast(?SERVER, clear_history).
+get_history() -> gen_server:call(?SERVER, get_history).
+put(Event,State) -> gen_server:cast(?SERVER, {log_event, Event, State}).
+timestamp() -> {MegaSec, Sec, MiliSec} = erlang:now(), MegaSec * 1000 * 1000 * 1000  + Sec * 1000 + MiliSec.
+
+init([]) -> {ok, #state{}}.
+handle_call(mypid, _From, State) -> {reply, {ok, self()}, State};
+handle_call(get_history, _From, #state{history = History} = State) -> {reply, {ok, lists:reverse(History)}, State};
+handle_call(_Request, _From, State) -> 
+    gas:info(?MODULE, "Event Log: call message ~p from ~p", [_Request, _From]),
+    Reply = ok,
+    {reply, Reply, State}.
+handle_cast({log_event, #game_event{game = GameId, event = EventName, args = Args} = Event, GameState}, #state{history = History} = State) ->
+    PlayerId = case lists:keyfind(player, 1, Args) of {_, Id} -> Id; _ -> <<"unknow">> end,
+
+    Container = 
+        #event_log{
+           feed_id = {GameId, PlayerId},
+           id = {timestamp(), GameId, PlayerId},
+           game_id = GameId,
+           event = EventName,
+           timestamp = calendar:now_to_universal_time(erlang:now()),
+           game_event = Event},
+
+    gas:info(?MODULE, "Event Log: ~p", [Container]),
+    kvs:add(Container),
+    {noreply, State#state{history = [Event | History]}};
+handle_cast(clear_history, State) -> {noreply, State#state{history = []}};
+handle_cast(_Msg, State) -> gas:info(?MODULE, "Event Log: cast message ~p", [_Msg]), {noreply, State}.
+handle_info(_Info, State) -> gas:info(?MODULE, "Event Log: info message ~p", [_Info]), {noreply, State}.
+terminate(_Reason, _State) -> ok.
+code_change(_OldVsn, State, _Extra) -> {ok, State}.

+ 0 - 197
apps/server/src/game_observer.erl

@@ -1,197 +0,0 @@
-%%%-------------------------------------------------------------------
-%%% @author Dayneko Roman <me@h0.org.ua>
-%%% @copyright (C) 2014, Dayneko Roman
-%%% @doc
-%%%
-%%% @end
-%%% Created : 22 Apr 2014 by Dayneko Roman <me@h0.org.ua>
-%%%-------------------------------------------------------------------
--module(game_observer).
-
--behaviour(gen_server).
-
--include_lib("kvs/include/kvs.hrl").
--include_lib("db/include/game_event_container.hrl").
--include_lib("server/include/requests.hrl").
-
-%% API
--export([start_link/0]).
-
-%% gen_server callbacks
--export([init/1, handle_call/3, handle_cast/2, handle_info/2,
-         terminate/2, code_change/3]).
-
-%% api
--export([mypid/0, clear_history/0, get_history/0, log_event/1]).
-
--define(SERVER, ?MODULE).
-
--record(state, {history = []}).
-
-%%%===================================================================
-%%% API
-%%%===================================================================
-
-%%--------------------------------------------------------------------
-%% @doc
-%% Starts the server
-%%
-%% @spec start_link() -> {ok, Pid} | ignore | {error, Error}
-%% @end
-%%--------------------------------------------------------------------
-start_link() ->
-    gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).
-
-mypid() ->
-    gen_server:call(?SERVER, mypid).
-
-clear_history() ->
-    gen_server:cast(?SERVER, clear_history).
-
-get_history() ->
-    gen_server:call(?SERVER, get_history).
-
-log_event(Event) ->
-    gen_server:cast(?SERVER, {log_event, Event}).
-
-%%%===================================================================
-%%% gen_server callbacks
-%%%===================================================================
-
-%%--------------------------------------------------------------------
-%% @private
-%% @doc
-%% Initializes the server
-%%
-%% @spec init(Args) -> {ok, State} |
-%%                     {ok, State, Timeout} |
-%%                     ignore |
-%%                     {stop, Reason}
-%% @end
-%%--------------------------------------------------------------------
-init([]) ->
-    {ok, #state{}}.
-
-%%--------------------------------------------------------------------
-%% @private
-%% @doc
-%% Handling call messages
-%%
-%% @spec handle_call(Request, From, State) ->
-%%                                   {reply, Reply, State} |
-%%                                   {reply, Reply, State, Timeout} |
-%%                                   {noreply, State} |
-%%                                   {noreply, State, Timeout} |
-%%                                   {stop, Reason, Reply, State} |
-%%                                   {stop, Reason, State}
-%% @end
-%%--------------------------------------------------------------------
-handle_call(mypid, _From, State) ->
-    {reply, {ok, self()}, State};
-handle_call(get_history, _From, #state{history = History} = State) ->
-    {reply, {ok, lists:reverse(History)}, State};
-handle_call(_Request, _From, State) ->
-    gas:info(?MODULE, ">>>>>>>>>>>>>>>>> call message ~p from ~p", [_Request, _From]),
-    Reply = ok,
-    {reply, Reply, State}.
-
-%%--------------------------------------------------------------------
-%% @private
-%% @doc
-%% Handling cast messages
-%%
-%% @spec handle_cast(Msg, State) -> {noreply, State} |
-%%                                  {noreply, State, Timeout} |
-%%                                  {stop, Reason, State}
-%% @end
-%%--------------------------------------------------------------------
-handle_cast({log_event, #game_event{game = GameId, event = EventName, args = Args} = Event}, #state{history = History} = State) ->
-
-    PlayerId = case lists:keyfind(player, 1, Args) of {_, Id} -> Id; _ -> <<"unknow">> end,
-    
-    Container = 
-        #game_event_container{
-           feed_id = {GameId, PlayerId},
-           id = {timestamp(), GameId, PlayerId},
-           game_id = GameId,
-           event = EventName,
-           timestamp = calendar:now_to_universal_time(erlang:now()), %% date in universal time
-           game_event = Event},
- 
-    gas:info(?MODULE, ">>>>>>>>>>>>>>>>> Container ~p", [Container]),
-    
-    kvs:add(Container), %% will be spamming kvs
-
-    {noreply, State#state{history = [Event | History]}};
-handle_cast(clear_history, State) ->
-    {noreply, State#state{history = []}};
-handle_cast(_Msg, State) ->
-    gas:info(?MODULE, ">>>>>>>>>>>>>>>>> cast message ~p", [_Msg]),
-    {noreply, State}.
-
-%%--------------------------------------------------------------------
-%% @private
-%% @doc
-%% Handling all non call/cast messages
-%%
-%% @spec handle_info(Info, State) -> {noreply, State} |
-%%                                   {noreply, State, Timeout} |
-%%                                   {stop, Reason, State}
-%% @end
-%%--------------------------------------------------------------------
-
-%%handle_info({relay_event, _Ref, #game_event{game = GameId, event = Event, args = Args} = GameEvent},
-%%            #state{history = History} = State) ->
-%%    
-%%    {_, PlayerId} = lists:keyfind(player, 1, Args),
-%%    
-%%    Container = 
-%%        #game_event_container{
-%%           feed_id = {GameId, PlayerId},
-%%           id = {timestamp(), GameId, PlayerId},
-%%           game_id = GameId,
-%%           event = Event,
-%%           timestamp = calendar:now_to_universal_time(erlang:now()), %% date in universal time
-%%           game_event = GameEvent},
-%% 
-%%    gas:info(?MODULE, ">>>>>>>>>>>>>>>>> Container ~p", [Container]),
-%%    
-%%    kvs:add(Container), %% will be spamming kvs
-%%    {noreply, State#state{history = [Event | History]}};
-handle_info(_Info, State) ->
-    gas:info(?MODULE, ">>>>>>>>>>>>>>>>> info message ~p", [_Info]),
-    {noreply, State}.
-
-%%--------------------------------------------------------------------
-%% @private
-%% @doc
-%% This function is called by a gen_server when it is about to
-%% terminate. It should be the opposite of Module:init/1 and do any
-%% necessary cleaning up. When it returns, the gen_server terminates
-%% with Reason. The return value is ignored.
-%%
-%% @spec terminate(Reason, State) -> void()
-%% @end
-%%--------------------------------------------------------------------
-terminate(_Reason, _State) ->
-    ok.
-
-%%--------------------------------------------------------------------
-%% @private
-%% @doc
-%% Convert process state when code is changed
-%%
-%% @spec code_change(OldVsn, State, Extra) -> {ok, NewState}
-%% @end
-%%--------------------------------------------------------------------
-code_change(_OldVsn, State, _Extra) ->
-    {ok, State}.
-
-%%%===================================================================
-%%% Internal functions
-%%%===================================================================
-
-
-timestamp() ->
-    {MegaSec, Sec, MiliSec} = erlang:now(),
-    MegaSec * 1000 * 1000 * 1000  + Sec * 1000 + MiliSec.

+ 1 - 3
apps/server/src/game_stats.erl

@@ -180,14 +180,12 @@ assign_points(RawResults, GameInfo) ->
             true -> do_nothing  % no statistics for robots
             true -> do_nothing  % no statistics for robots
          end,
          end,
          if not Robot ->
          if not Robot ->
-                if KakushPoints /= 0 ->
+                if KakushPoints /= 0 -> 
         kvs:add(#transaction{id=kvs:next_id(transaction,1),feed_id={kakush,UserId},comment=game_end});
         kvs:add(#transaction{id=kvs:next_id(transaction,1),feed_id={kakush,UserId},comment=game_end});
-%                       ok = nsm_accounts:transaction(UserId, ?CURRENCY_KAKUSH, KakushPoints, TI#ti_game_event{type = game_end});
                    true -> ok
                    true -> ok
                 end,
                 end,
                 if GamePoints /= 0 ->
                 if GamePoints /= 0 ->
         kvs:add(#transaction{id=kvs:next_id(transaction,1),feed_id={game_points,UserId},comment=game_end});
         kvs:add(#transaction{id=kvs:next_id(transaction,1),feed_id={game_points,UserId},comment=game_end});
-%                        ok = nsm_accounts:transaction(UserId, ?CURRENCY_GAME_POINTS, GamePoints, TI#ti_game_event{type = game_end});
                    true -> ok
                    true -> ok
                 end;
                 end;
             true -> do_nothing %% no points for robots
             true -> do_nothing %% no points for robots

+ 2 - 2
apps/server/src/game_sup.erl

@@ -19,11 +19,11 @@ init([]) ->
     Shutdown = 2000,
     Shutdown = 2000,
     IdGen = {id_generator, {id_generator, start_link, []},  Restart, Shutdown, worker, [id_generator]},
     IdGen = {id_generator, {id_generator, start_link, []},  Restart, Shutdown, worker, [id_generator]},
     AuthServer = {auth_server, {auth_server, start_link, []}, Restart, Shutdown, worker, [auth_server]},
     AuthServer = {auth_server, {auth_server, start_link, []}, Restart, Shutdown, worker, [auth_server]},
-    GameObserver = {game_observer, {game_observer, start_link, []}, Restart, Shutdown, worker, [game_observer]},
+    GameLog = {game_log, {game_log, start_link, []}, Restart, Shutdown, worker, [game_log]},
     GameStats = {game_stats, {game_stats, start_link, []}, Restart, Shutdown, worker, [game_stats]},
     GameStats = {game_stats, {game_stats, start_link, []}, Restart, Shutdown, worker, [game_stats]},
     GameManager = {game_manager, {game_manager, start_link, []}, Restart, Shutdown, worker, [game_manager]},
     GameManager = {game_manager, {game_manager, start_link, []}, Restart, Shutdown, worker, [game_manager]},
     TavlaSup = {tavla_sup, {tavla_sup, start_link, []}, Restart, Shutdown, supervisor, [tavla_sup]},
     TavlaSup = {tavla_sup, {tavla_sup, start_link, []}, Restart, Shutdown, supervisor, [tavla_sup]},
     OkeySup = {okey_sup, {okey_sup, start_link, []}, Restart, Shutdown, supervisor, [okey_sup]},
     OkeySup = {okey_sup, {okey_sup, start_link, []}, Restart, Shutdown, supervisor, [okey_sup]},
     LuckySup = {lucky_sup, {lucky_sup, start_link, []}, Restart, Shutdown, supervisor, [lucky_sup]},
     LuckySup = {lucky_sup, {lucky_sup, start_link, []}, Restart, Shutdown, supervisor, [lucky_sup]},
-    {ok, {SupFlags, [IdGen,GameManager,LuckySup,AuthServer,GameObserver,GameStats,TavlaSup,OkeySup]}}.
+    {ok, {SupFlags, [IdGen,GameManager,LuckySup,AuthServer,GameLog,GameStats,TavlaSup,OkeySup]}}.
 
 

+ 1 - 1
apps/server/src/gas.erl

@@ -2,7 +2,7 @@
 -compile(export_all).
 -compile(export_all).
 
 
 %-define(ALLOWED, [gas,nsg_trn_lucky,game_session,game_manager,game_okey_table]).
 %-define(ALLOWED, [gas,nsg_trn_lucky,game_session,game_manager,game_okey_table]).
--define(ALLOWED, [gas,auth_server]).
+-define(ALLOWED, [gas,auth_server,nsg_trn_lucky,game_log]).
 
 
 log(Module, String, Args, Fun) ->
 log(Module, String, Args, Fun) ->
     case lists:member(Module,?ALLOWED) of
     case lists:member(Module,?ALLOWED) of

+ 9 - 8
apps/server/src/nsg_trn_lucky.erl

@@ -525,8 +525,8 @@ reg_player_at_new_table(User, From,
     gas:info(?MODULE,"TRN_LUCKY <~p> New table created: ~p.", [GameId, TableId]),
     gas:info(?MODULE,"TRN_LUCKY <~p> New table created: ~p.", [GameId, TableId]),
 
 
     NewPlayers = reg_player(#player{id = PlayerId, user_id = UserId, is_bot = IsBot}, Players),
     NewPlayers = reg_player(#player{id = PlayerId, user_id = UserId, is_bot = IsBot}, Players),
-    F2 = fun({PlId, #'PlayerInfo'{id = UId}, _SNum, _Points}, Acc) ->
-                 reg_player(#player{id = PlId, user_id = UId, is_bot = true}, Acc)
+    F2 = fun({PlId, #'PlayerInfo'{id = UId, robot=Bot}, _SNum, _Points}, Acc) ->
+                 reg_player(#player{id = PlId, user_id = UId, is_bot = Bot}, Acc)
          end,
          end,
     NewPlayers2 = lists:foldl(F2, NewPlayers, RobotsRegData),
     NewPlayers2 = lists:foldl(F2, NewPlayers, RobotsRegData),
     gas:info(?MODULE,"TRN_LUCKY <~p> User ~p registered as player <~p>.", [GameId, UserId, PlayerId]),
     gas:info(?MODULE,"TRN_LUCKY <~p> User ~p registered as player <~p>.", [GameId, UserId, PlayerId]),
@@ -769,12 +769,13 @@ add_points_to_accounts(Points, GameId, GameType, GameMode) ->
                         id = GameId, double_points = 1,
                         id = GameId, double_points = 1,
                         type = game_end, tournament_type = ?TOURNAMENT_TYPE},
                         type = game_end, tournament_type = ?TOURNAMENT_TYPE},
     [begin
     [begin
-         if GamePoints =/= 0 ->
-                 kvs:add(#transaction{
-                            id=kvs:next_id(transaction,1),
-                            feed_id={game_points,UserId},
-                            amount=GamePoints,
-                            comment=TI});
+         if GamePoints =/= 0 -> ok;
+
+%                 kvs:add(#transaction{
+%                            id=kvs:next_id(transaction,1),
+%                            feed_id={game_points,UserId},
+%                            amount=GamePoints,
+%                            comment=TI});
 
 
             true -> do_nothing
             true -> do_nothing
          end
          end

+ 8 - 13
apps/server/src/okey/game_okey_table.erl

@@ -122,10 +122,6 @@ init([GameId, TableId, Params]) ->
                    {table, {?MODULE, self()}}],
                    {table, {?MODULE, self()}}],
     {ok, Relay} = ?RELAY:start(RelayParams),
     {ok, Relay} = ?RELAY:start(RelayParams),
 
 
-%%    {ok, ObserverPid} = game_observer:mypid(),
-%%    [begin gas:info(?MODULE,"OKEY_TABLE subscribe observer to player ~p", [PI]), 
-%%               ?RELAY:subscribe(Relay, ObserverPid, PlayerId, observer) end|| {PlayerId, #'PlayerInfo'{robot = false}, _, _} = PI <- PlayersInfo],
-
     gas:info(?MODULE,"OKEY_NG_TABLE_TRN_DBG <~p,~p> Set timeout: ~p, round timeout: ~p.", [GameId, TableId, SetTimeout, RoundTimeout]),
     gas:info(?MODULE,"OKEY_NG_TABLE_TRN_DBG <~p,~p> Set timeout: ~p, round timeout: ~p.", [GameId, TableId, SetTimeout, RoundTimeout]),
     gas:info(?MODULE,"OKEY_NG_TABLE_TRN_DBG <~p,~p> PlayersInfo: ~p.", [GameId, TableId, PlayersInfo]),
     gas:info(?MODULE,"OKEY_NG_TABLE_TRN_DBG <~p,~p> PlayersInfo: ~p.", [GameId, TableId, PlayersInfo]),
     gas:info(?MODULE,"OKEY_NG_TABLE_TRN <~p,~p> Started.", [GameId, TableId]),
     gas:info(?MODULE,"OKEY_NG_TABLE_TRN <~p,~p> Started.", [GameId, TableId]),
@@ -317,10 +313,7 @@ handle_parent_message(start_round, StateName,
                                    round_timer = RoundTRef,
                                    round_timer = RoundTRef,
                                    set_timer = NewSetTRef},
                                    set_timer = NewSetTRef},
 
 
-%%    {ok, ObserverPid} = game_observer:mypid(),
-
     [begin
     [begin
-%%         ?RELAY:subscribe(Relay, ObserverPid, PlayerId, observer),
          GameInfoMsg = create_okey_game_info(NewStateData),
          GameInfoMsg = create_okey_game_info(NewStateData),
          send_to_client_ge(Relay, PlayerId, GameInfoMsg, NewStateData),
          send_to_client_ge(Relay, PlayerId, GameInfoMsg, NewStateData),
          GameStartedMsg = create_okey_game_started(SeatNum, DeskState, NewCurRound, NewStateData),
          GameStartedMsg = create_okey_game_started(SeatNum, DeskState, NewCurRound, NewStateData),
@@ -957,25 +950,27 @@ init_players([{PlayerId, UserInfo, SeatNum, _StartPoints} | PlayersInfo], Player
     init_players(PlayersInfo, NewPlayers).
     init_players(PlayersInfo, NewPlayers).
 
 
 %%=================================================================
 %%=================================================================
-send_to_subscriber_ge(Relay, SubscrId, Msg, #okey_state{game_id = GameId} = _StateData) ->
+send_to_subscriber_ge(Relay, SubscrId, Msg, #okey_state{game_id = GameId} = State) ->
     [Name|List] = tuple_to_list(Msg),
     [Name|List] = tuple_to_list(Msg),
     Event = #game_event{game = GameId, event = Name, args = lists:zip(known_records:fields(Name),List) },
     Event = #game_event{game = GameId, event = Name, args = lists:zip(known_records:fields(Name),List) },
     gas:info(?MODULE,"SEND SUB ~p",[Event]),
     gas:info(?MODULE,"SEND SUB ~p",[Event]),
-    game_observer:log_event(Event),
     ?RELAY:table_message(Relay, {to_subscriber, SubscrId, Event}).
     ?RELAY:table_message(Relay, {to_subscriber, SubscrId, Event}).
 
 
-send_to_client_ge(Relay, PlayerId, Msg, #okey_state{game_id = GameId} = _StateData) ->
+send_to_client_ge(Relay, PlayerId, Msg, #okey_state{players=Players,game_id = GameId} = State) ->
     [Name|List] = tuple_to_list(Msg),
     [Name|List] = tuple_to_list(Msg),
     Event = #game_event{game = GameId, event = Name, args = lists:zip(known_records:fields(Name),List) },
     Event = #game_event{game = GameId, event = Name, args = lists:zip(known_records:fields(Name),List) },
     gas:info(?MODULE,"SEND CLIENT ~p",[Event]),
     gas:info(?MODULE,"SEND CLIENT ~p",[Event]),
-    game_observer:log_event(Event),
+    case get_player(PlayerId, Players) of
+        {ok, #player{info=#'PlayerInfo'{robot=false}}} ->
+             gas:info("SAVE: ~p~n",[(get_player(PlayerId,Players))]),
+             game_log:put(Event,State);
+        _ -> ok end,
     ?RELAY:table_message(Relay, {to_client, PlayerId, Event}).
     ?RELAY:table_message(Relay, {to_client, PlayerId, Event}).
 
 
-relay_publish_ge(Relay, Msg, #okey_state{game_id = GameId} = _StateData) ->
+relay_publish_ge(Relay, Msg, #okey_state{game_id = GameId} = State) ->
     [Name|List] = tuple_to_list(Msg),
     [Name|List] = tuple_to_list(Msg),
     Event = #game_event{game = GameId, event = Name, args = lists:zip(known_records:fields(Name),List) },
     Event = #game_event{game = GameId, event = Name, args = lists:zip(known_records:fields(Name),List) },
     gas:info(?MODULE,"RELAY PUBLISH ~p",[Event]),
     gas:info(?MODULE,"RELAY PUBLISH ~p",[Event]),
-    game_observer:log_event(Event),
     relay_publish(Relay, Event).
     relay_publish(Relay, Event).
 
 
 relay_publish(Relay, Msg) ->
 relay_publish(Relay, Msg) ->

+ 2 - 1
rels/web/files/sys.config

@@ -10,7 +10,8 @@
      [{pass_init_db,true},
      [{pass_init_db,true},
       {nodes,[]},
       {nodes,[]},
       {dba, store_mnesia},
       {dba, store_mnesia},
-      {schema, [kvs_user, kvs_acl, kvs_feed, kvs_subscription, db_config, db_scoring, db_accounts, db_table, db_tournaments, db_game_event_container ]}]},
+      {schema, [kvs_user, kvs_acl, kvs_feed, kvs_subscription,
+                db_config, db_scoring, db_accounts, db_table, db_tournaments, db_game_log ]}]},
  {sasl, [
  {sasl, [
          {sasl_error_logger, {file, "log/sasl-error.log"}},
          {sasl_error_logger, {file, "log/sasl-error.log"}},
          {errlog_type, error},
          {errlog_type, error},