Browse Source

kvs_feed reduced

Maxim Sokhatsky 12 years ago
parent
commit
58d3d8a6b4
1 changed files with 28 additions and 97 deletions
  1. 28 97
      src/kvs_feed.erl

+ 28 - 97
src/kvs_feed.erl

@@ -11,16 +11,6 @@ create() ->
     ok = kvs:put(#feed{id = FId} ),
     FId.
 
-add_direct_message(FId, User, Desc) -> add_direct_message(FId, User, utils:uuid_ex(), Desc).
-add_direct_message(FId, User, EntryId, Desc) -> add_direct_message(FId, User, undefined, EntryId, Desc, []).
-add_direct_message(FId, User, To, EntryId, Desc, Medias) -> kvs:feed_add_direct_message(FId, User, To, EntryId, Desc, Medias).
-add_group_entry(FId, User, EntryId, Desc, Medias) -> kvs:feed_add_entry(FId, User, EntryId, Desc, Medias).
-add_group_entry(FId, User, To, EntryId, Desc, Medias, Type) -> kvs:feed_add_entry(FId, User, To, EntryId, Desc, Medias, Type, "").
-add_entry(FId, User, EntryId, Desc) -> add_entry(FId, User, EntryId, Desc, []).
-add_entry(FId, User, EntryId, Desc, Medias) -> kvs:feed_add_entry(FId, User, EntryId, Desc, Medias).
-add_entry(FId, User, To, EntryId, Desc, Medias, Type) -> kvs:feed_add_entry(FId, User, To, EntryId, Desc, Medias, Type, "").
-add_shared_entry(FId, User, To, EntryId, Desc, Medias, Type, SharedBy) -> kvs:feed_add_entry(FId, User, To, EntryId, Desc, Medias, Type, SharedBy).
-
 add_like(Fid, Eid, Uid) ->
     Write_one_like = fun(Next) ->
         Self_id = kvs:next_id("one_like", 1),   
@@ -75,15 +65,6 @@ get_comments_count(Uid) ->
         {ok, UEC} -> UEC#user_etries_count.comments;
         {error, notfound} -> 0 end.
 
-get_feed(FId) -> kvs:get(feed, FId).
-get_entries_in_feed(FId) -> kvs:entries_in_feed(FId).
-get_entries_in_feed(FId, Count) -> kvs:entries_in_feed(FId, Count).
-get_entries_in_feed(FId, StartFrom, Count) -> kvs:entries_in_feed(FId, StartFrom, Count).
-get_direct_messages(FId, Count) -> kvs:entries_in_feed(FId, undefined, Count).
-get_direct_messages(FId, StartFrom, Count) -> kvs:entries_in_feed(FId, StartFrom, Count).
-get_entries_in_feed(FId, StartFrom, Count, FromUserId)-> Entries = kvs:entries_in_feed(FId, StartFrom, Count),
-    [E || #entry{from = From} = E <- Entries, From == FromUserId].
-
 create_message(Table) ->
     EId = kvs:next_id("entry", 1),
     #entry{id = {EId, system_info},
@@ -95,30 +76,19 @@ create_message(Table) ->
 
 
 remove_entry(FeedId, EId) ->
-    {ok, #feed{top = TopId} = Feed} = get_feed(FeedId),
-
+    {ok, #feed{top = TopId} = Feed} = kvs:get(feed,FeedId),
     case kvs:get(entry, {EId, FeedId}) of
         {ok, #entry{prev = Prev, next = Next}}->
             ?INFO("P: ~p, N: ~p", [Prev, Next]),
-            case kvs:get(entry, Next) of
-                {ok, NE} -> kvs:put(NE#entry{prev = Prev});
-                _ -> ok
-            end,
-            case kvs:get(entry, Prev) of
-                {ok, PE} -> kvs:put(PE#entry{next = Next});
-                _ -> ok
-            end,
-
-            case TopId of
-                {EId, FeedId} -> kvs:put(Feed#feed{top = Prev});
-                _ -> ok
-            end;
+            case kvs:get(entry, Next) of {ok, NE} -> kvs:put(NE#entry{prev = Prev});  _ -> ok end,
+            case kvs:get(entry, Prev) of {ok, PE} -> kvs:put(PE#entry{next = Next});  _ -> ok end,
+            case TopId of {EId, FeedId} -> kvs:put(Feed#feed{top = Prev}); _ -> ok end;
         {error, notfound} -> ?INFO("Not found"), ok
     end,
     kvs:delete(entry, {EId, FeedId}).
 
 edit_entry(FeedId, EId, NewDescription) ->
-    case kvs:entry_by_id({EId, FeedId}) of
+    case kvs:get(entry,{EId, FeedId}) of
         {ok, OldEntry} ->
             NewEntryRaw =  OldEntry#entry{description = NewDescription,
                                           raw_description = NewDescription},
@@ -130,17 +100,12 @@ edit_entry(FeedId, EId, NewDescription) ->
 
 remove_entry_comments(FId, EId) ->
     AllComments = kvs:comments_by_entry(FId, EId),
-    [begin
-          kvs:delete(comment, ID)
-     end || #comment{id = ID, media = M} <- AllComments].
+    [begin kvs:delete(comment, ID) end || #comment{id = ID, media = M} <- AllComments].
 
 entry_add_comment(FId, User, EntryId, ParentComment, CommentId, Content, Medias) ->
-     case kvs:entry_by_id({EntryId, FId}) of
-         {ok, _E} ->
-             kvs:add_comment(FId, User, EntryId, ParentComment, CommentId, Content, Medias);
-         _ ->
-             ok
-     end.
+     case kvs:get(entry,{EntryId, FId}) of
+         {ok, _E} -> kvs:add_comment(FId, User, EntryId, ParentComment, CommentId, Content, Medias);
+         _ -> ok end.
 
 get_one_like_list(undefined) -> [];
 get_one_like_list(Id) -> {ok, OneLike} = kvs:get(one_like, Id),
@@ -149,8 +114,7 @@ get_one_like_list(Id) -> {ok, OneLike} = kvs:get(one_like, Id),
 get_entries_likes(Entry_id) ->
     case kvs:get(entry_likes, Entry_id) of
         {ok, Likes} -> get_one_like_list(Likes#entry_likes.one_like_head);
-        {error, notfound} -> []
-    end.
+        {error, notfound} -> [] end.
 
 get_entries_likes_count(Entry_id) ->
     case kvs:get(entry_likes, Entry_id) of
@@ -182,11 +146,6 @@ get_user_likes(UserId, {Page, PageAmount}) ->
         {error, notfound} -> []
     end.
 
-% we have same in user? Why?
-is_subscribed_user(UserUidWho, UserUidWhom) -> kvs_users:is_user_subscr(UserUidWho, UserUidWhom).
-user_subscription_count(UserUid) -> length(kvs_users:list_subscr(UserUid)).
-user_friends_count(UserUid) -> length(kvs_users:list_subscr_me(UserUid)).
-
 get_comments_entries(UserUid, _, _Page, _PageAmount) ->
     Pids = [Eid || #comment{entry_id=Eid} <- kvs:select(comment,
         fun(#comment{author_id=Who}) when Who=:=UserUid ->true;(_)->false end)],
@@ -204,22 +163,6 @@ get_my_discussions(_FId, Page, PageAmount, UserUid) ->
     lists:flatten([kvs:select(entry,[{where, fun(#entry{entry_id=ID})-> ID=:=Pid end},
         {order, {1, descending}},{limit, {1,1}}]) || Pid <- Pids]).
 
-test_likes() ->
-    add_like(1, "17a10803-f064-4718-ae46-4a6d3c88415c-0796e2bb", "derp"),
-    add_like(1, "17a10803-f064-4718-ae46-4a6d3c88415c-0796e2bb", "derpina"),
-    add_like(1, "17a10803-f064-4718-ae46-4a6d3c88415c-0796e2bb", "derpington"),
-    add_like(1, "17a10803-f064-4718-ae46-4a6d3c88415c-0796e2bc", "derp"),
-    add_like(1, "17a10803-f064-4718-ae46-4a6d3c88415c-0796e2bc", "lederpeaux"),
-    add_like(2, "17a10803-f064-4718-ae46-4a6d3c88415c-0796e2bd", "derp"),
-    add_like(2, "17a10803-f064-4718-ae46-4a6d3c88415c-0796e2be", "derp"),
-    [
-        get_entries_likes("17a10803-f064-4718-ae46-4a6d3c88415c-0796e2bb"),
-        get_entries_likes_count("17a10803-f064-4718-ae46-4a6d3c88415c-0796e2bb") == 3,
-        get_user_likes("derp"),
-        get_user_likes("derp", {1, 2}),
-        get_user_likes_count("derp") == 4
-    ].
-
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 handle_notice(["feed", "delete", Owner] = Route, Message,
@@ -234,7 +177,7 @@ handle_notice(["feed", "group", GroupId, "entry", EntryId, "add"] = Route,
     ?INFO("feed(~p): group message: Owner=~p, Route=~p, Message=~p",
           [self(), Owner, Route, Message]),
     [From, _Destinations, Desc, Medias] = Message,
-    feed:add_group_entry(Feed, From, [{GroupId, group}], EntryId,
+    kvs_feed:add_group_entry(Feed, From, [{GroupId, group}], EntryId,
                          Desc, Medias, {group, direct}),
     % statistics
     case Owner == GroupId of
@@ -262,22 +205,22 @@ handle_notice(["feed", "user", FeedOwner, "entry", EntryId, "add"] = Route,
         %% user added message to own feed
         FeedOwner == From andalso FeedOwner == WorkerOwner->
             FilteredDst = [D || {_, group} = D <- Destinations],
-            feed:add_entry(Feed, From, FilteredDst, EntryId, Desc, Medias,
+            kvs_feed:add_entry(Feed, From, FilteredDst, EntryId, Desc, Medias,
                            {user, normal}), self() ! {feed_refresh,Feed,20};
 
         %% friend added message to public feed
         FeedOwner == From ->
-            feed:add_entry(Feed, From, [], EntryId, Desc, Medias,
+            kvs_feed:add_entry(Feed, From, [], EntryId, Desc, Medias,
                            {user, normal}), self() ! {feed_refresh,Feed,20};
 
         %% direct message to worker owner
         FeedOwner == WorkerOwner ->
-            feed:add_direct_message(Direct, From, [{FeedOwner, user}],
+            kvs_feed:add_direct_message(Direct, From, [{FeedOwner, user}],
                                     EntryId, Desc, Medias), self() ! {direct_refresh,Direct,20};
 
         %% user sent direct message to friend, add copy to his direct feed
         From == WorkerOwner ->
-            feed:add_direct_message(Direct, WorkerOwner, Destinations,
+            kvs_feed:add_direct_message(Direct, WorkerOwner, Destinations,
                                     EntryId, Desc, Medias), self() ! {direct_refresh,Direct,20};
         true ->
             ?INFO("not matched case in entry->add")
@@ -293,7 +236,7 @@ handle_notice(["feed", "user", _FeedOwner, "entry", EntryId, "add_system"] = Rou
           [self(), WorkerOwner, Route, Message]),
     [From, _Destinations, Desc, Medias] = Message,
 
-    feed:add_entry(Feed, From, [], EntryId, Desc, Medias, {user, system}),
+    kvs_feed:add_entry(Feed, From, [], EntryId, Desc, Medias, {user, system}),
     {noreply, State};
 
 handle_notice(["feed", "group", GroupId, "entry", EntryId, "add_system"] = Route,
@@ -302,7 +245,7 @@ handle_notice(["feed", "group", GroupId, "entry", EntryId, "add_system"] = Route
     ?INFO("feed(~p): group system message: Owner=~p, Route=~p, Message=~p",
           [self(), Owner, Route, Message]),
     [From, _Destinations, Desc, Medias] = Message,
-    feed:add_group_entry(Feed, From, [{GroupId, group}], EntryId,
+    kvs_feed:add_group_entry(Feed, From, [{GroupId, group}], EntryId,
                          Desc, Medias, {group, system}),
     {noreply, State};
 
@@ -311,7 +254,7 @@ handle_notice(["feed", "user", UId, "post_note"] = Route, Message,
     ?INFO("feed(~p): post_note: Owner=~p, Route=~p, Message=~p", [self(), Owner, Route, Message]),
     Note = Message,
     Id = utils:uuid_ex(),
-    feed:add_entry(Feed, UId, [], Id, Note, [], {user, system_note}),
+    kvs_feed:add_entry(Feed, UId, [], Id, Note, [], {user, system_note}),
     {noreply, State};
 
 handle_notice(["feed", _, WhoShares, "entry", NewEntryId, "share"],
@@ -321,7 +264,7 @@ handle_notice(["feed", _, WhoShares, "entry", NewEntryId, "share"],
     %% FIXME: sharing is like posting to the wall
     ?INFO("share: ~p, WhoShares: ~p", [E, WhoShares]),
 %    NewEntryId = utils:uuid_ex(),
-    feed:add_shared_entry(Feed, From, Destinations, NewEntryId, Desc, Medias, {user, normal}, WhoShares),
+    kvs_feed:add_shared_entry(Feed, From, Destinations, NewEntryId, Desc, Medias, {user, normal}, WhoShares),
     {noreply, State};
 
 handle_notice(["feed", "group", _Group, "entry", EntryId, "delete"] = Route,
@@ -330,7 +273,7 @@ handle_notice(["feed", "group", _Group, "entry", EntryId, "delete"] = Route,
     ?INFO("feed(~p): remove entry: Owner=~p, Route=~p, Message=~p",
           [self(), Owner, Route, Message]),
     %% all group subscribers shold delete entry from their feeds
-    feed:remove_entry(Feed, EntryId),
+    kvs_feed:remove_entry(Feed, EntryId),
     self() ! {feed_refresh,Feed,20},
     {noreply, State};
 
@@ -429,7 +372,7 @@ feed_add_direct_message(FId,User,To,EntryId,Desc,Medias) -> feed_add_entry(FId,U
 feed_add_entry(FId,From,EntryId,Desc,Medias) -> feed_add_entry(FId,From,undefined,EntryId,Desc,Medias,{user,normal},"").
 feed_add_entry(FId, User, To, EntryId,Desc,Medias,Type,SharedBy) ->
     %% prevent adding of duplicate records to feed
-    case kvs:entry_by_id({EntryId, FId}) of
+    case kvs:get(entry,{EntryId, FId}) of
         {ok, _} -> ok;
         _ -> do_feed_add_entry(FId, User, To, EntryId, Desc, Medias, Type, SharedBy)
     end.
@@ -480,14 +423,6 @@ do_feed_add_entry(FId, User, To, EntryId, Desc, Medias, Type, SharedBy) ->
     kvs:put(ModEntry),
     {ok, ModEntry}.
 
-
-
-
-
-% @spec entry_by_id(term()) -> {ok, #entry{}} | {error, not_found}.
-entry_by_id(EntryId) -> kvs:get(entry, EntryId).
-
-
 purge_feed(FeedId) ->
     {ok,Feed} = kvs:get(feed,FeedId),
     Removal = riak_entry_traversal(Feed#feed.top, -1),
@@ -497,10 +432,10 @@ purge_feed(FeedId) ->
 purge_unverified_feeds() ->
     [purge_feed(FeedId) || #user{feed=FeedId,status=S,email=E} <- kvs:all(user),E==undefined].
 
-riak_entry_traversal(undefined, _) -> [];
-riak_entry_traversal(_, 0) -> [];
-riak_entry_traversal(Next, Count)->
-    case store_riak:get(entry, Next) of
+entry_traversal(undefined, _) -> [];
+entry_traversal(_, 0) -> [];
+entry_traversal(Next, Count)->
+    case kvs:get(entry, Next) of
         {error,notfound} -> [];
         {ok, R} ->
             Prev = element(#entry.prev, R),
@@ -512,22 +447,18 @@ riak_entry_traversal(Next, Count)->
                 end;
                 _-> Count 
             end,
-            [R | riak_entry_traversal(Prev, Count1)]
+            [R | entry_traversal(Prev, Count1)]
     end.
 
 entries_in_feed(FeedId, undefined, PageAmount) ->
     case kvs:get(feed, FeedId) of
-        {ok, O} -> riak_entry_traversal(O#feed.top, PageAmount);
+        {ok, O} -> entry_traversal(O#feed.top, PageAmount);
         {error, notfound} -> []
     end;
 entries_in_feed(FeedId, StartFrom, PageAmount) ->
-    %% construct entry unic id
     case kvs:get(entry,{StartFrom, FeedId}) of
-        {ok, #entry{prev = Prev}} -> riak_entry_traversal(Prev, PageAmount);
+        {ok, #entry{prev = Prev}} -> entry_traversal(Prev, PageAmount);
         _ -> []
     end.
 
-feed_direct_messages(_FId, Page, PageAmount, CurrentUser, CurrentFId) ->
-    Page, PageAmount, CurrentUser, CurrentFId,
-    [].