Просмотр исходного кода

remove log.hrl/create containers from list/cleanup

Andrii Zadorozhnii 11 лет назад
Родитель
Сommit
1fd50617eb

+ 4 - 9
include/accounts.hrl

@@ -16,17 +16,12 @@
 
 -type transaction_info() :: #tx_payment{} | #tx_admin_change{} | #tx_default_assignment{}.
 
--record(user_transaction, {?CONTAINER, user
-%,top
-}).
--record(transaction, {?ITERATOR(user_transaction),
-%        id :: transaction_id(),
+-record(user_transaction, {?CONTAINER, user}).
+
+-record(transaction, {?ITERATOR(user_transaction), %:: transaction_id(),
         commit_time :: erlang:now(),
         amount :: integer(),    %% amount to move between accounts
         remitter :: account_id(), %% accout that gives money/points
         acceptor :: account_id(), %% account receive money/points
         currency :: currency(),   %% some of the points or money
-        info :: transaction_info()
-%        next,
- %       prev 
-}).
+        info :: transaction_info()}).

+ 0 - 1
include/acls.hrl

@@ -1,5 +1,4 @@
 -include("kvs.hrl").
-
 -record(acl, {?CONTAINER}).
 
 -record(acl_entry, {?ITERATOR(acl),

+ 14 - 30
include/feeds.hrl

@@ -1,21 +1,13 @@
 -include("kvs.hrl").
-
 -record(feed, {?CONTAINER, aclver}).
-%        id,
-%        top,
-%        aclver
-%        entries_count=0
-%}).
 
--record(entry, {?ITERATOR(feed),
-%        id, % {entry_id, feed_id} we want to hold in key information about feed
-        entry_id, % these fields 
-%        feed_id,  % are for secondary indexes
-        from, % author
+-record(entry, {?ITERATOR(feed), % {entry_id, feed_id}
+        entry_id,
+        from,
         to,
         title,
         description,
-        created, % time
+        created,
         hidden,
         access,
         shared,
@@ -23,13 +15,9 @@
         deleted,
         likes,
         likes_count,
-%        comments,
-%        comments_rear,
-%        comments_count,
-        media = [], %% for oembed
+        media = [],
         etc,       %% field to link additional info
-        type = {user, normal}
-}).
+        type = {user, normal}}).
 
 -record(id_seq, {thing, id}).
 
@@ -45,18 +33,14 @@
         type :: {atom(), atom() | string()},
         thumbnail_height}).
 
--record(comment, {?ITERATOR(feed),
-%        id,          %% {comment_id, entry_id}
-        comment_id,  %% generowane przez id_seq
-        entry_id,    %% index
-        content,     %% text of comment
-        author_id,
-        creation_time,
-        media = [],  %% for oembed
-        parent
-%        comments,
-%        comments_rear
-}).
+-record(comment, {?ITERATOR(feed), % {comment_id, entry_id}
+        comment_id,
+        entry_id,
+        content,
+        from,
+        created,
+        media = [],
+        parent}).
 
 
 -record(entry_likes, {

+ 0 - 2
include/groups.hrl

@@ -2,14 +2,12 @@
 -include("kvs.hrl").
 
 -record(group,{?ITERATOR(feed),
-%        id,
         name,
         description,
         scope :: public | private,
         creator,
         created,
         owner,
-%        feeds,
         users_count = 0 :: integer(),   % we have to store this, counting would be very expensive and this number is sufficient for sorting and stuff
         entries_count = 0}).
 

+ 5 - 0
include/kvs.hrl

@@ -8,6 +8,11 @@
 
 -define(CONTAINER, id, top, entries_count=0).
 -define(ITERATOR(Container), id, container=Container, feed_id, prev, next, feeds=[]).
+-define(CONTAINERS, [
+    {feed,              record_info(fields, feed)},
+    {acl,               record_info(fields, acl)},
+    {user_transaction,  record_info(fields, user_transaction)},
+    {user_payment,      record_info(fields, user_payment)} ]).
 
 -record(container, {?CONTAINER}).
 -record(iterator,  {?ITERATOR(undefined)}).

+ 0 - 16
include/log.hrl

@@ -1,16 +0,0 @@
--define(LOG(Format, Args, Level, Tags), error_logger:info_msg("~p:~p " ++ Format,[?MODULE,?LINE] ++ Args)).
--define(WRN(Format, Args, Level, Tags), error_logger:warning_msg("~p:~p " ++ Format,[?MODULE,?LINE] ++ Args)).
--define(ERR(Format, Args, Level, Tags), error_logger:error_msg("~p:~p " ++ Format,[?MODULE,?LINE] ++ Args)).
-
--define(INFO(Format, Args, Tag), ?LOG(Format, Args, ?info, Tag)).
--define(INFO(Format, Args),      ?INFO(Format, Args, [])).
--define(INFO(Format),            ?INFO(Format, [])).
-
--define(WARNING(Format, Args, Tag), ?WRN(Format, Args, ?warning, Tag)).
--define(WARNING(Format, Args),      ?WARNING(Format, Args, [])).
--define(WARNING(Format),            ?WARNING(Format, [])).
-
--define(ERROR(Format, Args, Tag), ?ERR(Format, Args, ?error, Tag)).
--define(ERROR(Format, Args),      ?ERROR(Format, Args, [])).
--define(ERROR(Format),            ?ERROR(Format, [])).
-

+ 2 - 8
include/payments.hrl

@@ -9,26 +9,20 @@
         state    :: any(),
         info     :: any()}).
 
+-record(user_payment, {?CONTAINER, user}).
+
 -record(payment, {?ITERATOR(user_payment),
-%        id              :: any(),
         external_id     :: any(),     % id of the purchase in external payment system if any
         user_id         :: any(),
         payment_type    :: payment_type(),
         state           :: payment_state(),
         membership,
         product,
-%        next            :: any(),
- %       prev            :: any(),
         start_time      :: erlang:now(),
         end_time        :: erlang:now(),
         state_log = []  :: [#state_change{}],
         info            :: any() }).
 
--record(user_payment, {?CONTAINER,
-        user :: any()
-%        top   :: any() 
-}).
-
 -define(MP_STATE_ADDED,      added).
 -define(MP_STATE_DONE,       done).
 -define(MP_STATE_CANCELLED,  cancelled).

+ 1 - 1
include/products.hrl

@@ -30,7 +30,7 @@
         fee                    :: integer(),  % net membership fee
         enabled                :: boolean(), % admin
         for_sale               :: boolean(),
-        creation_date          :: calendar:date_time(), % auto
+        created                :: calendar:date_time(), % auto
         modify_date            :: calendar:date_time() }).
 
 -record(product_category, {

+ 29 - 69
src/kvs.erl

@@ -9,14 +9,12 @@
 -include_lib("kvs/include/invites.hrl").
 -include_lib("kvs/include/config.hrl").
 -include_lib("kvs/include/accounts.hrl").
--include_lib("kvs/include/log.hrl").
 -include_lib("kvs/include/membership.hrl").
 -include_lib("kvs/include/payments.hrl").
 -include_lib("kvs/include/products.hrl").
 -include_lib("stdlib/include/qlc.hrl").
 -include_lib("kvs/include/feed_state.hrl").
 -compile(export_all).
--define(r, {sr, record_info(fields, acl)}).
 
 start() -> DBA = ?DBA, DBA:start().
 dir() -> DBA = ?DBA, DBA:dir().
@@ -36,24 +34,23 @@ add(Record) when is_tuple(Record) ->
         error_logger:info_msg("check container ~p ~p", [CName, Cid]),
         Container = case kvs:get(CName, Cid) of {ok,C} -> error_logger:info_msg("ok"),C;
         {error, not_found} when Cid /= undefined ->
-            case CName of
-                acl  -> A = #acl{ id = Cid}, kvs:put(A), A;
-                _ -> F = #feed{id = Cid}, kvs:put(F), F end;
+            NC =  setelement(#container.id, erlang:list_to_tuple([CName|proplists:get_value(CName, ?CONTAINERS)]), Cid),
+            NC1 = setelement(#container.entries_count, NC, 0),
+            error_logger:info_msg("Create top: ~p", [NC1]),
+            kvs:put(NC1),NC1;
         _ -> error end,
 
         if Container == error -> {error, no_container}; true ->
             error_logger:info_msg("container ~p", [Container]),
             Next = undefined,
-            Prev = case element(#container.top, Container) of undefined -> error_logger:info_msg("TOP undefined"), undefined;
-              Tid -> error_logger:info_msg("Current container top: ~p", [Tid]),
-                    case kvs:get(Type, Tid) of {error, not_found} -> error_logger:info_msg("No top element in db"),undefined;
-                 {ok, Top} -> error_logger:info_msg("Update top: old ~p", [Top]), NewTop = setelement(#iterator.next, Top, Id), kvs:put(NewTop), element(#iterator.id, NewTop) end end,
-            error_logger:info_msg("Next ~p Prev ~p",[Next,Prev]),
+            Prev = case element(#container.top, Container) of undefined -> undefined;
+              Tid -> case kvs:get(Type, Tid) of {error, not_found} -> undefined;
+                {ok, Top} -> NewTop = setelement(#iterator.next, Top, Id), kvs:put(NewTop), element(#iterator.id, NewTop) end end,
+            error_logger:info_msg("next ~p | prev ~p",[Next,Prev]),
 
             C1 = setelement(#container.top, Container, Id),
             C2 = setelement(#container.entries_count, C1, element(#container.entries_count, Container)+1),
-            error_logger:info_msg("Update container ~p top ~p", [Container, Id]),
-            error_logger:info_msg("New container: ~p", [C2]),
+            error_logger:info_msg("updated container: ~p", [C2]),
             kvs:put(C2),
 
             R  = setelement(#iterator.feeds, Record, [{F1, kvs_feed:create()} || F1 <- element(#iterator.feeds, Record)]),
@@ -64,49 +61,13 @@ add(Record) when is_tuple(Record) ->
             error_logger:info_msg("PUT: ~p", [R3]),
             {ok, R3} end end.
 
-%add(FId, User, EntryId, ParentComment, CommentId, Content, Medias, _) ->
-%  FullId = {CommentId, {EntryId, FId}},
-
-%  Prev = case ParentComment of
-%    undefined ->
-%      {ok, Entry} = kvs:get(entry,{EntryId, FId}),
-%      {PrevC, E} = case Entry#entry.comments of
-%        undefined -> {undefined, Entry#entry{comments_rear = FullId}};
-%        Id ->  case kvs:get(comment, Id) of {ok, PrevTop} -> kvs:put(PrevTop#comment{next = FullId}); {error, not_found} -> skip end, {Id, Entry} end,
-%      kvs:put(E#entry{comments=FullId}),
-%      PrevC;
-%    P ->
-%      case kvs:get(comment, {P, {EntryId, FId}}) of
-%        {ok, Parent} ->
-%          {PrevC, CC} = case Parent#comment.comments of
-%            undefined -> {undefined, Parent#comment{comments_rear = FullId}};
-%            Id -> {ok, PrevTop} = kvs:get(comment, Id), kvs:put(PrevTop#comment{next = FullId}), {Id, Parent} end,
-%          kvs:put(CC#comment{comments = FullId}),
-%          PrevC;
-%        {error, not_found} -> undefined end end,
-
-%  Comment = #comment{id = FullId,
-%                     author_id = User,
-%                     comment_id = CommentId,
-%                     entry_id = EntryId,
-%                     content = Content,
-%                     media = Medias,
-%                     creation_time = now(),
-%                     prev = Prev,
-%                     next = undefined},
-%  error_logger:info_msg("PUT: ~p", [Comment]),
-%  kvs:put(Comment),
-%  {ok, Comment}.
-
 remove(RecordName, RecordId) ->
     error_logger:info_msg("Remove ~p ~p", [RecordName, RecordId]),
     case kvs:get(RecordName, RecordId) of {error, not_found} -> error_logger:info_msg("not found");
     {ok, E} ->
-        error_logger:info_msg("going to remove ~p", [E]),
         Id = element(#iterator.id, E),
         CName = element(#iterator.container, E),
         Cid = element(#iterator.feed_id, E),
-        error_logger:info_msg("Remove entry ~p from {~p, Feed: ~p}", [Id, CName, Cid]),
 
         {ok, Container} = kvs:get(CName, Cid),
         Top = element(#container.top, Container),
@@ -146,8 +107,7 @@ entries({_, FeedId}, StartFrom, Count) ->
     case kvs:get(entry,{StartFrom, FeedId}) of {error,not_found}->[];
     {ok, E} -> traversal(entry, element(#iterator.prev, E), Count) end;
 
-entries(Container, RecordType, Count) ->
-    traversal(RecordType, element(#container.top, Container), Count).
+entries(Container, RecordType, Count) -> traversal(RecordType, element(#container.top, Container), Count).
 
 init_db() ->
     case kvs:get(user,"joe") of
@@ -160,20 +120,20 @@ init_db() ->
             add_translations();
         {ok,_} -> ignore end.
 
-add_sample_packages() -> kvs_membership:add_sample_data().
+%add_sample_packages() -> kvs_membership:add_sample_data().
 
-add_sample_payments() ->
-    {ok, Pkg1} = kvs:get(membership,1),
-    {ok, Pkg2} = kvs:get(membership,2),
-    {ok, Pkg3} = kvs:get(membership,3),
-    {ok, Pkg4} = kvs:get(membership,4),
-    PList = [{"doxtop", Pkg1},{"maxim", Pkg2},{"maxim",Pkg4}, {"kate", Pkg3} ],
-    [ok = add_payment(U, P) || {U, P} <- PList],
-    ok.
+%add_sample_payments() ->
+%    {ok, Pkg1} = kvs:get(membership,1),
+%    {ok, Pkg2} = kvs:get(membership,2),
+%    {ok, Pkg3} = kvs:get(membership,3),
+%    {ok, Pkg4} = kvs:get(membership,4),
+%    PList = [{"doxtop", Pkg1},{"maxim", Pkg2},{"maxim",Pkg4}, {"kate", Pkg3} ],
+%    [ok = add_payment(U, P) || {U, P} <- PList],
+%    ok.
 
-add_payment(UserId, Package) ->
-    {ok, MPId} = kvs_payment:add_payment(#payment{user_id=UserId, membership=Package}),
-    kvs_payment:set_payment_state(MPId, ?MP_STATE_DONE, undefined).
+%add_payment(UserId, Package) ->
+%    {ok, MPId} = kvs_payment:add_payment(#payment{user_id=UserId, membership=Package}),
+%    kvs_payment:set_payment_state(MPId, ?MP_STATE_DONE, undefined).
 
 add_seq_ids() ->
     Init = fun(Key) ->
@@ -266,18 +226,18 @@ get(RecordName, Key, Default) ->
     DBA=?DBA,
     case DBA:get(RecordName, Key) of
         {ok,{RecordName,Key,Value}} ->
-            ?INFO("db:get config value ~p,", [{RecordName, Key, Value}]),
+            error_logger:info_msg("db:get config value ~p,", [{RecordName, Key, Value}]),
             {ok,Value};
         {error, _B} ->
-            ?INFO("db:get new config value ~p,", [{RecordName, Key, Default}]),
+            error_logger:info_msg("db:get new config value ~p,", [{RecordName, Key, Default}]),
             DBA:put({RecordName,Key,Default}),
             {ok,Default} end.
 
 delete(Keys) -> DBA=?DBA, DBA:delete(Keys).
-delete(Tab, Key) -> ?INFO("db:delete ~p:~p",[Tab, Key]), DBA=?DBA,DBA:delete(Tab, Key).
+delete(Tab, Key) -> error_logger:info_msg("db:delete ~p:~p",[Tab, Key]), DBA=?DBA,DBA:delete(Tab, Key).
 delete_by_index(Tab, IndexId, IndexVal) -> DBA=?DBA,DBA:delete_by_index(Tab, IndexId, IndexVal).
 multi_select(RecordName, Keys) -> DBA=?DBA,DBA:multi_select(RecordName, Keys).
-select(From, PredicateFunction) -> ?INFO("db:select ~p, ~p",[From,PredicateFunction]), DBA=?DBA, DBA:select(From, PredicateFunction).
+select(From, PredicateFunction) -> error_logger:info_msg("db:select ~p, ~p",[From,PredicateFunction]), DBA=?DBA, DBA:select(From, PredicateFunction).
 count(RecordName) -> DBA=?DBA,DBA:count(RecordName).
 all(RecordName) -> DBA=?DBA,DBA:all(RecordName).
 all_by_index(RecordName, Index, IndexValue) -> DBA=?DBA,DBA:all_by_index(RecordName, Index, IndexValue).
@@ -285,11 +245,11 @@ next_id(RecordName) -> DBA=?DBA,DBA:next_id(RecordName).
 next_id(RecordName, Incr) -> DBA=?DBA,DBA:next_id(RecordName, Incr).
 next_id(RecordName, Default, Incr) -> DBA=?DBA,DBA:next_id(RecordName, Default, Incr).
 
+author_comments(Who) -> DBA=?DBA,DBA:author_comments(Who).
+
 make_admin(User) ->
     {ok,U} = kvs:get(user, User),
-    kvs:put(U#user{type = admin}),
-    kvs_acl:define_access({user, U#user.username}, {feature, admin}, allow),
-    kvs_acl:define_access({user_type, admin}, {feature, admin}, allow),
+    kvs_acl:define_access({user, U#user.id}, {feature, admin}, allow),
     ok.
 
 make_rich(User) -> 

+ 3 - 4
src/kvs_account.erl

@@ -2,7 +2,6 @@
 -include_lib("kvs/include/accounts.hrl").
 -include_lib("kvs/include/membership.hrl").
 -include_lib("kvs/include/payments.hrl").
--include_lib("kvs/include/log.hrl").
 -include_lib("kvs/include/feed_state.hrl").
 -compile(export_all).
 
@@ -82,7 +81,7 @@ tx_list(UserId, StartFrom, Limit) ->
 
 handle_notice(["kvs_account", "user", User, "transaction"] = Route,
     Message, #state{owner = Owner, type =Type} = State) ->
-    ?INFO("queue_action(~p): add_transaction: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),    
+    error_logger:info_msg("queue_action(~p): add_transaction: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),    
     MP = Message,
     add_transaction_to_user(User,MP),
     {noreply, State};
@@ -94,7 +93,7 @@ handle_notice(Route, Message, State) -> error_logger:info_msg("Unknown ACCOUNTS
 add_transaction_to_user(UserId,Purchase) ->
     {ok,Top} = case kvs:get(user_transaction, UserId) of
                      {ok,T} -> {ok,T};
-                     _ -> ?INFO("user_transaction not found"),
+                     _ -> error_logger:info_msg("user_transaction not found"),
                           Head = #user_transaction{ user = UserId, top = undefined},
                           {kvs:put(Head),Head}
                 end,
@@ -132,4 +131,4 @@ add_transaction_to_user(UserId,Purchase) ->
                            prev = Prev},
 
     case kvs:put(Entry) of ok -> kvs:put(#user_transaction{ user = UserId, top = EntryId}), {ok, EntryId};
-                              Error -> ?INFO("Cant write transaction"), {failure,Error} end.
+                              Error -> error_logger:info_msg("Cant write transaction"), {failure,Error} end.

+ 1 - 5
src/kvs_acl.erl

@@ -62,8 +62,4 @@ check_access(UId, {feature, _Feature} = Resource) ->
     case kvs:get(user, UId) of
         {ok, User} -> check_access(User, Resource);
         E -> E
-    end.
-
-entries(AclId) -> case kvs:get(acl, AclId) of {ok,RO} -> read_entries(RO#acl.top, []); {error, _} -> [] end.
-read_entries(undefined, Result) -> Result;
-read_entries(Next, Result) -> case kvs:get(acl_entry, Next) of {ok,RO} -> read_entries(RO#acl_entry.prev, Result ++ [RO]); {error, _} -> Result end.
+    end.

+ 0 - 61
src/kvs_comment.erl

@@ -1,61 +0,0 @@
--module(kvs_comment).
--copyright('Synrc Research Center s.r.o.').
--include_lib("kvs/include/feeds.hrl").
--include_lib("kvs/include/config.hrl").
--compile(export_all).
-
-%add(FId, User, EntryId, ParentComment, CommentId, Content, Medias) ->
-%     case kvs:get(entry,{EntryId, FId}) of
-%         {ok, _E} -> add(FId, User, EntryId, ParentComment, CommentId, Content, Medias, dont_check);
-%         _ -> ok end.
-
-%add(FId, User, EntryId, ParentComment, CommentId, Content, Medias, _) ->
-%  FullId = {CommentId, {EntryId, FId}},
-
-%  Prev = case ParentComment of
-%    undefined ->
-%      {ok, Entry} = kvs:get(entry,{EntryId, FId}),
-%      {PrevC, E} = case Entry#entry.comments of
-%        undefined -> {undefined, Entry#entry{comments_rear = FullId}};
-%        Id ->  case kvs:get(comment, Id) of {ok, PrevTop} -> kvs:put(PrevTop#comment{next = FullId}); {error, not_found} -> skip end, {Id, Entry} end,
-%      kvs:put(E#entry{comments=FullId}),
-%      PrevC;
-%    P ->
-%      case kvs:get(comment, {P, {EntryId, FId}}) of
-%        {ok, Parent} ->
-%          {PrevC, CC} = case Parent#comment.comments of
-%            undefined -> {undefined, Parent#comment{comments_rear = FullId}};
-%            Id -> {ok, PrevTop} = kvs:get(comment, Id), kvs:put(PrevTop#comment{next = FullId}), {Id, Parent} end,
-%          kvs:put(CC#comment{comments = FullId}),
-%          PrevC;
-%        {error, not_found} -> undefined end end,
-
-%  Comment = #comment{id = FullId,
-%                     author_id = User,
-%                     comment_id = CommentId,
-%                     entry_id = EntryId,
-%                     content = Content,
-%                     media = Medias,
-%                     creation_time = now(),
-%                     prev = Prev,
-%                     next = undefined},
-%  error_logger:info_msg("PUT: ~p", [Comment]),
-%  kvs:put(Comment),
-%  {ok, C%omment}.
-%
-%read_comments(undefined) -> [];
-%read_comments([#comment{comments = C} | Rest]) -> [read_comments(C) | read_comments(Rest)];
-%read_comments(C) -> kvs:traversal(comment, C#comment.next, undefined).%
-
-%feed_comments({EId, FId}) ->
-%    case kvs:get(entry,{EId, FId}) of
-%        {ok, #entry{comments_rear = undefined}} -> [];
-%        {ok, #entry{comments_rear = First}} -> lists:flatten(read_comments(First));
-%        _ -> [] end.
-
-author_comments(Who) -> DBA=?DBA,DBA:author_comments(Who).
-
-%remove(FId, EId) ->
-%    AllComments = feed_comments({EId, FId}),
-%    [begin kvs:delete(comment, ID) end || #comment{id = ID, media = _M} <- AllComments].
-

+ 13 - 17
src/kvs_feed.erl

@@ -8,8 +8,6 @@
 -include_lib("kvs/include/users.hrl").
 -include_lib("kvs/include/groups.hrl").
 -include_lib("kvs/include/feed_state.hrl").
--include_lib("kvs/include/log.hrl").
-
 -define(CACHED_ENTRIES, 20).
 
 create() ->
@@ -117,20 +115,19 @@ handle_notice([kvs_feed, _, Owner, entry, Eid, add],
       {_,_} ->
         EntryId = case Eid of new -> kvs:uuid(); _-> Eid end,
         E = Entry#entry{id = {EntryId, Fid}, entry_id = EntryId, feeds=[comments] },
-        kvs:add(E),
+        kvs:add(E)
 
         % todo: group entry counts should be counted for each feed
-        case RouteType of group ->
-          {ok, Group} = kvs:get(group, Owner),
-          GE = Group#group.entries_count,
-          error_logger:info_msg("count: ~p", [GE]),
-          kvs:put(Group#group{entries_count = GE+1}),
-
-        case kvs:get(group_subscription, {E#entry.from, Owner}) of 
-            {ok, Subs} -> SE = Subs#group_subscription.posts_count,
-                kvs:put(Subs#group_subscription{posts_count = SE+1});
-            {error,not_found} -> error_logger:info_msg("no group subscription found") end;
-          _ -> skip end
+%        case RouteType of group ->
+%          {ok, Group} = kvs:get(group, Owner),
+%          GE = Group#group.entries_count,
+%          error_logger:info_msg("count: ~p", [GE]),
+%          kvs:put(Group#group{entries_count = GE+1}),
+%        case kvs:get(group_subscription, {E#entry.from, Owner}) of 
+%            {ok, Subs} -> SE = Subs#group_subscription.posts_count,
+%                kvs:put(Subs#group_subscription{posts_count = SE+1});
+%            {error,not_found} -> error_logger:info_msg("no group subscription found") end;
+%          _ -> skip end
  end,
 % self() ! {feed_refresh, Fid, ?CACHED_ENTRIES};
   {noreply, S};
@@ -183,17 +180,16 @@ handle_notice([kvs_feed, entry, {Eid, FeedId}, comment, Cid, add],
     User = From,
 
     Comment = #comment{id = FullId,
-                     author_id = User,
+                     from = User,
                      comment_id = Cid,
                      entry_id = EntryId,
                      feed_id =  FeedId2, % entry commens or parent comment comments
                      content = Content,
                      media = Medias,
-                     creation_time = now(),
+                     created = now(),
                      feeds = [comments]},
     error_logger:info_msg("Comment ~p ready to put.", [Comment]),
     kvs:add(Comment)
-%      kvs_comment:add(E#entry.feed_id, From, E#entry.entry_id, Parent, Cid, Content, Medias)
 
     end || E <- kvs:all_by_index(entry, entry_id, Eid)];
 

+ 8 - 9
src/kvs_group.erl

@@ -3,7 +3,6 @@
 -include_lib("kvs/include/users.hrl").
 -include_lib("kvs/include/groups.hrl").
 -include_lib("kvs/include/accounts.hrl").
--include_lib("kvs/include/log.hrl").
 -include_lib("kvs/include/feed_state.hrl").
 -include_lib("kvs/include/config.hrl").
 -include_lib("mqs/include/mqs.hrl").
@@ -30,7 +29,7 @@ delete(GroupName) ->
                     Routes = kvs_users:rk_group_feed(GroupName),
                     kvs_users:unbind_group_exchange(Channel, GroupName, Routes),
                     mqs_channel:close(Channel);
-                {error,Reason} -> ?ERROR("delete group failed: ~p",[Reason]) end end.
+                {error,Reason} -> error_logger:info_msg("delete group failed: ~p",[Reason]) end end.
 
 participate(UserName) -> DBA=?DBA,DBA:participate(UserName).
 members(GroupName) -> DBA=?DBA,DBA:members(GroupName).
@@ -73,7 +72,7 @@ join(UserName,GroupName) ->
 leave(UserName,GroupName) ->
     kvs:delete(group_subscription, {UserName, GroupName}),
     case kvs:get(group, GroupName) of
-        {error,_} -> ?ERROR("Remove ~p from group failed reading group ~p", [UserName, GroupName]);
+        {error,_} -> error_logger:info_msg("Remove ~p from group failed reading group ~p", [UserName, GroupName]);
         {ok,Group} -> kvs:put(Group#group{users_count = Group#group.users_count - 1}) end.
 
 approve_request(UserName, GroupName) -> add(UserName, GroupName, member).
@@ -108,7 +107,7 @@ user_has_access(UserName, GroupName) ->
 
 handle_notice(["kvs_group", "update", GroupName] = Route, 
     Message, #state{owner=ThisGroupOwner, type=Type} = State) ->
-    ?INFO("queue_action(~p): update_group: Owner=~p, Route=~p, Message=~p", [self(), {Type, ThisGroupOwner}, Route, Message]),    
+    error_logger:info_msg("queue_action(~p): update_group: Owner=~p, Route=~p, Message=~p", [self(), {Type, ThisGroupOwner}, Route, Message]),    
     {_UId, _GroupUsername, Name, Description, Owner, Publicity} = Message,
     case kvs:get(group, GroupName) of
         {ok, Group} ->
@@ -117,12 +116,12 @@ handle_notice(["kvs_group", "update", GroupName] = Route,
                 scope = coalesce(Publicity,Group#group.scope),
                 owner = coalesce(Owner,Group#group.owner)},
             kvs:put(NewGroup);
-        {error,Reason} -> ?ERROR("Cannot update group ~p",[Reason]) end,
+        {error,Reason} -> error_logger:info_msg("Cannot update group ~p",[Reason]) end,
     {noreply, State};
 
 handle_notice(["kvs_group", "remove", GroupName] = Route, 
     Message, #state{owner = Owner, type = Type} = State) ->
-    ?INFO("queue_action(~p): remove_group: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
+    error_logger:info_msg("queue_action(~p): remove_group: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
     delete(GroupName),
     {noreply, State};
 
@@ -135,7 +134,7 @@ handle_notice([kvs_group, join, GroupName],
 
 handle_notice(["kvs_group", "leave", GroupName] = Route,
     Message, #state{owner = Owner, type =Type} = State) ->
-    ?INFO("queue_action(~p): remove_from_group: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
+    error_logger:info_msg("queue_action(~p): remove_from_group: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
     {UserName} = Message,
     leave(UserName,GroupName),
 %    subscription_mq(group, remove, UserName, GroupName),
@@ -165,7 +164,7 @@ init_mq(Group=#group{}) ->
             Relations = build_group_relations(Group),
             [mqs_channel:bind_exchange(Channel, ?GROUP_EXCHANGE(Group#group.id), ?NOTIFICATIONS_EX, Route) || Route <- Relations],
             mqs_channel:close(Channel);
-        {error, Reason} -> ?ERROR("init_mq error: ~p",[Reason]) end.
+        {error, Reason} -> error_logger:info_msg("init_mq error: ~p",[Reason]) end.
 
 rk_group_feed(Group) -> mqs_lib:list_to_key([kvs_feed, group, Group, '*', '*', '*']).
 
@@ -176,4 +175,4 @@ subscription_mq(Type, Action, Who, Where) ->
                 {group,add}     -> mqs_channel:bind_exchange(Channel, ?GROUP_EXCHANGE(Who), ?NOTIFICATIONS_EX, rk_group_feed(Where));
                 {groupr,remove}  -> mqs_channel:unbind_exchange(Channel, ?GROUP_EXCHANGE(Who), ?NOTIFICATIONS_EX, rk_group_feed(Where)) end,
             mqs_channel:close(Channel);
-        {error,Reason} -> ?ERROR("subscription_mq error: ~p",[Reason]) end.
+        {error,Reason} -> error_logger:info_msg("subscription_mq error: ~p",[Reason]) end.

+ 7 - 8
src/kvs_meeting.erl

@@ -2,7 +2,6 @@
 -include_lib("kvs/include/users.hrl").
 -include_lib("kvs/include/meetings.hrl").
 -include_lib("kvs/include/feed_state.hrl").
--include_lib("kvs/include/log.hrl").
 -include_lib("kvs/include/config.hrl").
 -compile(export_all).
 
@@ -42,34 +41,34 @@ lost() -> lists:usort([erlang:element(3, I) || I <- kvs:all(play_record)]).
 
 handle_notice(["kvs_meeting", "user", UId, "create"] = Route,
     Message, #state{owner = Owner, type =Type} = State) ->
-    ?INFO("queue_action(~p): create: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
+    error_logger:info_msg("queue_action(~p): create: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
     {TourName, TourDesc, {Y,M,D}, Time, MaxPlayers, Quota, Award, TourType, GameType} = Message,
     case kvs_meeting:create(UId, TourName, TourDesc, {Y,M,D}, Time, MaxPlayers, Quota, Award, TourType, GameType) of
         {error,X} -> 
-            ?ERROR("Error creating tournament: ~p", X);
+            error_logger:info_msg("Error creating tournament: ~p", X);
         TId -> skip end,
     {noreply, State};
 
 handle_notice(["kvs_meeting", "user", UId, "create_and_join"] = Route,
     Message, #state{owner = Owner, type =Type} = State) ->
-    ?INFO("queue_action(~p): create_and_join: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
+    error_logger:info_msg("queue_action(~p): create_and_join: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
     {TourName, TourDesc, {Y,M,D}, Time, MaxPlayers, Quota, Award, TourType, GameType} = Message,
     case kvs_meeting:create(UId, TourName, TourDesc, {Y,M,D}, Time, MaxPlayers, Quota, Award, TourType, GameType) of
         {error,X} -> 
-            ?ERROR("Error creating tournament: ~p", X);
+            error_logger:info_msg("Error creating tournament: ~p", X);
         TId -> kvs_meeting:join(UId, TId) end,
     {noreply, State};
 
 handle_notice(["kvs_meeting", "user", UId, "join"] = Route,
     Message, #state{owner = Owner, type =Type} = State) ->
-    ?INFO("queue_action(~p): tournament_join: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
+    error_logger:info_msg("queue_action(~p): tournament_join: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
     {UId, TId} = Message,
     kvs_meeting:join(UId, TId),
     {noreply, State};
 
 handle_notice(["kvs_meeting", "user", UId, "leave"] = Route,
     Message, #state{owner = Owner, type =Type} = State) ->
-    ?INFO("queue_action(~p): tournament_remove: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
+    error_logger:info_msg("queue_action(~p): tournament_remove: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
     {UId, TId} = Message,
     kvs_meeting:leave(UId, TId),
     {noreply, State};
@@ -95,7 +94,7 @@ join_tournament(UserId, TournamentId) ->
                  points = GP,
                  quota = Q});
         _ ->
-            ?INFO(" User ~p not found for joining tournament ~p", [UserId, TournamentId])
+            error_logger:info_msg(" User ~p not found for joining tournament ~p", [UserId, TournamentId])
     end.
 
 leave_tournament(UserId, TournamentId) ->

+ 2 - 3
src/kvs_membership.erl

@@ -3,7 +3,6 @@
 -include_lib("kvs/include/membership.hrl").
 -include_lib("kvs/include/payments.hrl").
 -include_lib("kvs/include/products.hrl").
--include_lib("kvs/include/log.hrl").
 -include_lib("kvs/include/accounts.hrl").
 -include_lib("kvs/include/feed_state.hrl").
 -compile(export_all).
@@ -71,11 +70,11 @@ delete_package(PackageId) -> kvs:delete(membership, PackageId).
 
 handle_notice(["kvs_membership","system", "add_package"] = Route,
     Message, #state{owner = Owner, type =Type} = State) ->
-    ?INFO("queue_action(~p): add_package: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
+    error_logger:info_msg("queue_action(~p): add_package: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
     {MP} = Message,
     case add_package(MP) of
         {ok, _} -> ok;
-        {error, Reason} -> ?ERROR("Unable to add membership package: ~p, Reason ~p", [MP, Reason])
+        {error, Reason} -> error_logger:info_msg("Unable to add membership package: ~p, Reason ~p", [MP, Reason])
     end,
     {noreply, State};
 

+ 20 - 44
src/kvs_payment.erl

@@ -1,19 +1,18 @@
 -module(kvs_payment).
 -include_lib("kvs/include/membership.hrl").
 -include_lib("kvs/include/payments.hrl").
--include_lib("kvs/include/log.hrl").
 -include_lib("kvs/include/accounts.hrl").
 -include_lib("kvs/include/feed_state.hrl").
 -compile(export_all).
 
-payments(UserId) -> payments(UserId, undefined, 10000).
-payments(UserId, undefined, PageAmount) ->
+payments(UserId) -> payments(UserId, undefined).
+payments(UserId, PageAmount) ->
     case kvs:get(user_payment, UserId) of
-        {ok, O} when O#user_payment.top =/= undefined -> payments(UserId, O#user_payment.top, PageAmount);
-        {error, _} -> [] end;
+        {ok, O} -> kvs:entries(O, payment, PageAmount);
+        {error, _} -> [] end.
 payments(UserId, StartFrom, Limit) ->
     case kvs:get(payment, StartFrom) of
-        {ok, #payment{next = N}=P} -> [ P | kvs:traversal(payment, #payment.next, N, Limit)];
+        {ok, P} ->  kvs:traversal(payment, P, Limit);
         X -> [] end.
 
 user_paid(UId) ->
@@ -42,48 +41,21 @@ charge_user_account(_MP) -> ok.
 %        kvs_account:transaction(UserId, quota,    Quota,    PaymentTransactionInfo)
 %    catch
 %        _:E ->
-%            ?ERROR("unable to charge user account. User=~p, OrderId=~p. Error: ~p",
+%            error_logger:info_msg("unable to charge user account. User=~p, OrderId=~p. Error: ~p",
 %                   [UserId, OrderId, E])
 %    end.
 
 add_payment(#payment{} = MP) -> add_payment(#payment{} = MP, undefined, undefined).
 add_payment(#payment{} = MP, State0, Info) ->
-    case kvs:get(payment, MP#payment.id) of
-        {ok, _} -> {error, already_bought_that_one};
-        {error, _} ->
-            Start = now(),
-            State = default_if_undefined(State0, undefined, ?MP_STATE_ADDED),
-            StateLog = case Info of
-                           undefined -> [#state_change{time = Start, state = State, info = system_change}];
-                           _ -> [#state_change{time = Start, state = State, info = Info}] end,
-
-            Id = default_if_undefined(MP#payment.id, undefined, payment_id()),
-            Purchase = MP#payment{id = Id, state = State, start_time = Start, state_log = StateLog},
-            add_to_user(Purchase#payment.user_id, Purchase) end.
-
-add_to_user(UserId,Payment) ->
-    {ok,Team} = case kvs:get(user_payment, UserId) of
-                     {ok,T} -> {ok,T};
-                     _ -> error_logger:info_msg("user_payment not found ~p. create top",[UserId]),
-                          Head = #user_payment{ user = UserId, top = undefined},
-                          {kvs:put(Head),Head} end,
-
-    EntryId = Payment#payment.id,
-    Prev = undefined,
-    case Team#user_payment.top of
-        undefined -> Next = undefined;
-        X -> case kvs:get(payment, X) of
-                {ok, TopEntry} ->
-                     Next = TopEntry#payment.id,
-                     EditedEntry = TopEntry#payment{next = TopEntry#payment.next, prev = EntryId},
-                     kvs:put(EditedEntry);
-                {error, _} -> Next = undefined end end,
-
-    kvs:put(#user_payment{ user = UserId, top = EntryId}), % update team top with current
-
-    Entry  = Payment#payment{id = EntryId, user_id = UserId, next = Next, prev = Prev},
-    case kvs:put(Entry) of ok -> {ok, EntryId};
-                           Error -> error_logger:info_msg("Cant write purchase"), {failure,Error} end.
+    error_logger:info_msg("ADD PAYMENT"),
+    Start = now(),
+    State = default_if_undefined(State0, undefined, ?MP_STATE_ADDED),
+    StateLog = case Info of
+        undefined -> [#state_change{time = Start, state = State, info = system_change}];
+        _ -> [#state_change{time = Start, state = State, info = Info}] end,
+
+    Id = default_if_undefined(MP#payment.id, undefined, payment_id()),
+    kvs:add(MP#payment{id = Id, state = State, start_time = Start, state_log = StateLog, feed_id=MP#payment.user_id}).
 
 set_payment_state(MPId, NewState, Info) ->
     case kvs:get(payment, MPId) of 
@@ -101,6 +73,7 @@ set_payment_state(MPId, NewState, Info) ->
     Purchase = MP#payment{state = NewState, end_time = EndTime, state_log = NewStateLog},
 
     mqs:notify([kvs_payment,user,Purchase#payment.user_id,notify],Purchase),
+
     NewMP=MP#payment{state = NewState, end_time = EndTime, state_log = NewStateLog},
     kvs:put(NewMP),
 
@@ -145,6 +118,7 @@ handle_notice([kvs_payment, user, Owner, add] = Route,
     Message, #state{owner = Owner, type =Type} = State) ->
     error_logger:info_msg("queue_action(~p): add_purchase: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),    
     {MP} = Message,
+    error_logger:info_msg("Add payment: ~p", [MP]),
     add_payment(MP),
     {noreply, State};
 
@@ -162,7 +136,9 @@ handle_notice(["kvs_payment", "user", _, "set_info"] = Route,
     set_payment_info(OrderId, Info),
     {noreply, State};
 
-handle_notice(Route, _, State) -> error_logger:info_msg("Unknown PAYMENTS notice ~p for: ~p, ~p", [Route, State#state.owner, State#state.type]), {noreply, State}.
+handle_notice(Route, _, State) -> 
+    %error_logger:info_msg("Unknown PAYMENTS notice ~p for: ~p, ~p", [Route, State#state.owner, State#state.type]), 
+    {noreply, State}.
 
 timestamp()->
   {Y, Mn, D} = erlang:date(),

+ 3 - 4
src/kvs_product.erl

@@ -5,7 +5,6 @@
 -include_lib("kvs/include/groups.hrl").
 -include_lib("kvs/include/feeds.hrl").
 -include_lib("kvs/include/accounts.hrl").
--include_lib("kvs/include/log.hrl").
 -include_lib("kvs/include/config.hrl").
 -include_lib("kvs/include/feed_state.hrl").
 -include_lib("mqs/include/mqs.hrl").
@@ -26,7 +25,7 @@ subscription_mq(Type, Action, Who, Whom) ->
                 {user,add}     -> mqs_channel:bind_exchange(Channel, ?USER_EXCHANGE(Who), ?NOTIFICATIONS_EX, rk_product_feed(Whom));
                 {user,remove}  -> mqs_channel:unbind_exchange(Channel, ?USER_EXCHANGE(Who), ?NOTIFICATIONS_EX, rk_product_feed(Whom)) end,
             mqs_channel:close(Channel);
-        {error,Reason} -> ?ERROR("subscription_mq error: ~p",[Reason]) end.
+        {error,Reason} -> error_logger:info_msg("subscription_mq error: ~p",[Reason]) end.
 
 init_mq(Product=#product{}) ->
     Groups = kvs_group:participate(Product),
@@ -34,12 +33,12 @@ init_mq(Product=#product{}) ->
     ExchangeOptions = [{type, <<"fanout">>}, durable, {auto_delete, false}],
     case mqs:open([]) of
         {ok, Channel} ->
-            ?INFO("Cration Exchange: ~p,",[{Channel,ProductExchange,ExchangeOptions}]),
+            error_logger:info_msg("Cration Exchange: ~p,",[{Channel,ProductExchange,ExchangeOptions}]),
             mqs_channel:create_exchange(Channel, ProductExchange, ExchangeOptions),
             Relations = build_product_relations(Product, Groups),
             [ mqs_channel:bind_exchange(Channel, ?USER_EXCHANGE(Product#product.id), ?NOTIFICATIONS_EX, Route) || Route <- Relations],
             mqs_channel:close(Channel);
-        {error,Reason} -> ?ERROR("init_mq error: ~p",[Reason]) end.
+        {error,Reason} -> error_logger:info_msg("init_mq error: ~p",[Reason]) end.
 
 build_product_relations(Product, Groups) -> [
     mqs:key( [kvs_product, '*', Product]),

+ 2 - 3
src/kvs_purchase.erl

@@ -2,7 +2,6 @@
 -copyright('Synrc Research Center s.r.o.').
 -include_lib("kvs/include/products.hrl").
 -include_lib("kvs/include/purchases.hrl").
--include_lib("kvs/include/log.hrl").
 -include_lib("kvs/include/config.hrl").
 -include_lib("kvs/include/accounts.hrl").
 -include_lib("kvs/include/feed_state.hrl").
@@ -25,14 +24,14 @@ products(UId) -> DBA=?DBA, DBA:products(UId).
 
 handle_notice(["kvs_purchase", "user", UId, "buy"] = Route,
     Message, #state{owner = Owner, type =Type} = State) ->
-    ?INFO(" queue_action(~p): buy_gift: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
+    error_logger:info_msg(" queue_action(~p): buy_gift: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
     {GId} = Message,
     buy(UId, GId),
     {noreply, State};
 
 handle_notice(["kvs_purchase", "user", UId, "give"] = Route,
     Message, #state{owner = Owner, type =Type} = State) ->
-    ?INFO(" queue_action(~p): give_gift: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
+    error_logger:info_msg(" queue_action(~p): give_gift: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
     {GId} = Message,
     give(UId, GId),
     {noreply, State};

+ 1 - 2
src/store_mnesia.erl

@@ -13,7 +13,6 @@
 -include_lib("kvs/include/purchases.hrl").
 -include_lib("kvs/include/products.hrl").
 -include_lib("kvs/include/accounts.hrl").
--include_lib("kvs/include/log.hrl").
 -include_lib("kvs/include/translations.hrl").
 -include_lib("stdlib/include/qlc.hrl").
 -compile(export_all).
@@ -172,5 +171,5 @@ members(GroupName) -> all_by_index(group_subscription, #group_subscription.where
 user_tournaments(UId) -> all_by_index(play_record, #play_record.who, UId).
 tournament_users(TId) -> all_by_index(play_record, #play_record.tournament, TId).
 author_comments(Who) ->
-    EIDs = [E || #comment{entry_id=E} <- all_by_index(comment,#comment.author_id, Who) ],
+    EIDs = [E || #comment{entry_id=E} <- all_by_index(comment,#comment.from, Who) ],
     lists:flatten([ all_by_index(entry, #entry.id,EID) || EID <- EIDs]).

+ 1 - 2
src/store_riak.erl

@@ -12,7 +12,6 @@
 -include_lib("kvs/include/payments.hrl").
 -include_lib("kvs/include/purchases.hrl").
 -include_lib("kvs/include/accounts.hrl").
--include_lib("kvs/include/log.hrl").
 -include_lib("stdlib/include/qlc.hrl").
 -compile(export_all).
 
@@ -71,7 +70,7 @@ make_indices(#payment{id=Id,user_id=UId}) -> [
     {<<"payment_bin">>, key_to_bin(Id)},
     {<<"user_bin">>, key_to_bin(UId)}];
 
-make_indices(#comment{id={CID,EID},author_id=Who}) -> [
+make_indices(#comment{id={CID,EID},from=Who}) -> [
     {<<"comment_bin">>, key_to_bin({CID,EID})},
     {<<"author_bin">>, key_to_bin(Who)}];