Browse Source

handle add comments

Andrii Zadorozhnii 11 years ago
parent
commit
f30250a6f0
2 changed files with 14 additions and 48 deletions
  1. 3 9
      src/kvs.erl
  2. 11 39
      src/kvs_feed.erl

+ 3 - 9
src/kvs.erl

@@ -26,35 +26,29 @@ wait_for_tables() -> DBA=?DBA, DBA:wait_for_tables().
 
 add(Record) when is_tuple(Record) ->
     Id = element(#iterator.id, Record),
-
-    case kvs:get(element(1,Record), Id) of {ok, _} -> error_logger:info_msg("Exist: ~p", [Id]),{error, exist};
+    case kvs:get(element(1,Record), Id) of {ok, _} -> error_logger:info_msg("Entry exist: ~p", [Id]),{error, exist};
     {error, not_found} ->
         Type = element(1, Record),
         CName = element(#iterator.container, Record),
         Cid = case element(#iterator.feed_id, Record) of undefined -> ?FEED(Type); Fid -> Fid end,
-%        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;
+        Container = case kvs:get(CName, Cid) of {ok,C} -> C;
         {error, not_found} when Cid /= undefined ->
             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 -> 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("updated container: ~p", [C2]),
             kvs:put(C2),
 
-            R  = setelement(#iterator.feeds, Record, [{F1, kvs_feed:create()} || F1 <- element(#iterator.feeds, Record)]),
+            R  = setelement(#iterator.feeds, Record, [ case F1 of {FN, Fd} -> {FN, Fd} ; _-> {F1, kvs_feed:create()} end || F1 <- element(#iterator.feeds, Record)]),
             R1 = setelement(#iterator.next,  R,  Next),
             R2 = setelement(#iterator.prev,  R1, Prev),
             R3 = setelement(#iterator.feed_id, R2, element(#container.id, Container)),

+ 11 - 39
src/kvs_feed.erl

@@ -113,7 +113,7 @@ user_likes(UserId, {Page, PageAmount}) ->
 %% MQ API
 
 handle_notice([kvs_feed,_,Owner,entry,_,add], [#entry{feed_id=undefined}=E|_], #state{owner=Owner}=S)->
-    GE = E#entry{id={E#entry.entry_id, ?FEED(entry)}, feed_id=undefined},
+    GE = E#entry{id={E#entry.entry_id, ?FEED(entry)}, feed_id=undefined, feeds=[comments]},
     error_logger:info_msg("=> entry to generic feed: ~p", [GE#entry.id]),
     kvs:add(GE),
     {noreply, S};
@@ -148,46 +148,18 @@ handle_notice([kvs_feed,_, Owner, entry, {_,Fid}, delete],
 
   case lists:keyfind(Fid,2,Feeds) of false -> skip;
     {_,_} -> error_logger:info_msg("REMOVE from FID ~p", [Fid]),kvs:remove(entry, Id) end,
-  %    self() ! {feed_refresh, FeedId, ?CACHED_ENTRIES};
   {noreply, State};
 
-handle_notice([kvs_feed, entry, {Eid, FeedId}, comment, Cid, add],
-              [From, Parent, Content, Medias, _, _],
-              #state{owner=Owner, feeds=Feeds} = State) ->
-
-    HasFeed = lists:keyfind(FeedId,2,Feeds) /= false,
-    if HasFeed -> [begin
-        {_, CFid} = lists:keyfind(comments, 1, E#entry.feeds),
-        FeedId2 = case Parent of undefined -> CFid;
-        Id -> case kvs:get(comment, {Parent, {E#entry.entry_id, E#entry.feed_id}}) of {error, not_found} -> CFid;
-            {ok, C} -> {_, PCFid} = lists:keyfind(comments, 1, C#comment.feeds), PCFid end end,
-
-        EntryId = E#entry.entry_id,
-        FullId = {Cid, {EntryId, E#entry.feed_id}},
-        User = From,
-
-        Comment = #comment{id = FullId,
-                     from = User,
-                     comment_id = Cid,
-                     entry_id = EntryId,
-                     feed_id =  FeedId2, % entry commens or parent comment comments
-                     content = Content,
-                     media = Medias,
-                     created = now(),
-                     feeds = [comments]},
-        kvs:add(Comment)
-
-        end || E <- kvs:all_by_index(entry, entry_id, Eid)]; true -> skip end,
-
-    {noreply, State};
-
-handle_notice(["kvs_feed", "user", UId, "count_comment_in_statistics"] = Route, 
-    Message, #state{owner = Owner, type =Type} = State) ->
-    error_logger:info_msg("queue_action(~p): count_comment_in_statistics: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
-    case kvs:get(user_etries_count, UId) of
-        {ok, UEC} -> kvs:put(UEC#user_etries_count{comments = UEC#user_etries_count.comments+1 });
-        {error, _} -> kvs:put(#user_etries_count{ user_id = UId, comments = 1 }) end,
-    {noreply, State};
+handle_notice([kvs_feed,_,Owner,comment,Cid,add],
+              [#comment{feed_id=undefined, entry_id={Eid,EFid}}=C,_,_],
+              #state{owner=Owner}=S) ->
+    kvs:add(C#comment{id={Cid, {Eid, EFid}}, feed_id=?FEED(comments)}),
+    {noreply, S};
+handle_notice([kvs_feed,_,Owner,comment,_,add],
+              [#comment{entry_id={_,EFid}}=C,_,_],
+              #state{owner=Owner, feeds=Feeds} = S) ->
+    case lists:keyfind(EFid,2,Feeds) of false -> skip; {_,_}-> kvs:add(C) end,
+    {noreply, S};
 
 handle_notice(["kvs_feed","likes", _, _, "add_like"] = Route,  % _, _ is here beacause of the same message used for comet update
     Message, #state{owner = Owner, type =Type} = State) ->