Browse Source

fix init_db

Maxim Sokhatsky 12 years ago
parent
commit
a6e9a521f2
4 changed files with 41 additions and 65 deletions
  1. 4 21
      include/log.hrl
  2. 13 21
      src/kvs.erl
  3. 1 1
      src/kvs_acl.erl
  4. 23 22
      src/kvs_user.erl

+ 4 - 21
include/log.hrl

@@ -1,33 +1,16 @@
 -define(LOG(Format, Args, Level, Tags), error_logger:info_msg("~p:~p " ++ Format,[?MODULE,?LINE] ++ Args)).
-
--define(DBG(Format, Args, Tag), ?LOG(Format, Args, ?debug, Tag)).
--define(DBG(Format, Args),      ?DBG(Format, Args, [])).
--define(DBG(Format),            ?DBG(Format, [])).
+-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(NOTICE(Format, Args, Tag), ?LOG(Format, Args, ?notice, Tag)).
--define(NOTICE(Format, Args),      ?NOTICE(Format, Args, [])).
--define(NOTICE(Format),            ?NOTICE(Format, [])).
-
--define(WARNING(Format, Args, Tag), ?LOG(Format, Args, ?warning, Tag)).
+-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), ?LOG(Format, Args, ?error, Tag)).
+-define(ERROR(Format, Args, Tag), ?ERR(Format, Args, ?error, Tag)).
 -define(ERROR(Format, Args),      ?ERROR(Format, Args, [])).
 -define(ERROR(Format),            ?ERROR(Format, [])).
 
--define(CRITICAL(Format, Args, Tag), ?LOG(Format, Args, ?critical, Tag)).
--define(CRITICAL(Format, Args),      ?CRITICAL(Format, Args, [])).
--define(CRITICAL(Format),            ?CRITICAL(Format, [])).
-
--define(ALERT(Format, Args, Tag), ?LOG(Format, Args, ?alert, Tag)).
--define(ALERT(Format, Args),      ?ALERT(Format, Args, [])).
--define(ALERT(Format),            ?ALERT(Format, [])).
-
--define(EMERGENCY(Format, Args, Tag), ?LOG(Format, Args, ?emergency, Tag)).
--define(EMERGENCY(Format, Args),      ?EMERGENCY(Format, Args, [])).
--define(EMERGENCY(Format),            ?EMERGENCY(Format, [])).

+ 13 - 21
src/kvs.erl

@@ -108,6 +108,11 @@ add_translations() ->
     end, ?URL_DICTIONARY).
 
 add_sample_users() ->
+
+    Groups = [ #group{username="Clojure"},
+               #group{username="Haskell"},
+               #group{username="Erlang"} ],
+
     UserList = [
                      #user{username = "maxim", password="kaka15ra",
                            name = "Maxim", surname = "Sokhatsky", feed = feed_create(),
@@ -128,34 +133,21 @@ add_sample_users() ->
                      } 
          ],
 
+    kvs:put(Groups),
 
-    ?INFO("creating groups"),
-
-%    GId1  = kvs_group:create_group_directly_to_db("maxim", "kakaranet", "Kakaranet", "Kakaranet'e Hoşgeldiniz", public),
-%    GId2  = kvs_group:create_group_directly_to_db("maxim", "yeniler", "Yeniler", "So, you must be new here.", public),
-
-    ?INFO("adding users accounts"),
     [ begin
           kvs_account:create_account(Me#user.username),
           kvs_account:transaction(Me#user.username, quota, kvs:get_config("accounts/default_quota", 300), #tx_default_assignment{}),
-          kvs:put(Me#user{password = kvs:sha(Me#user.password),
-                                starred = feed_create(),
-                                pinned = feed_create()})
+          kvs:put(Me#user{password = kvs:sha(Me#user.password), starred = feed_create(), pinned = feed_create()})
       end || Me <- UserList],
-    ?INFO("adding users to groups"),
-    [ begin
-        ok
-%          kvs_users:init_mq(Me#user.username, [GId1, GId2]),
-%          kvs_group:add_to_group_directly_to_db(Me#user.username, GId1, member),
-%          kvs_group:add_to_group_directly_to_db(Me#user.username, GId2, member)
-      end || Me <- UserList ],
+
     kvs_acl:define_access({user, "maxim"},    {feature, admin}, allow),
     kvs_acl:define_access({user_type, admin}, {feature, admin}, allow),
-    ?INFO("making all users each other friends").
-%    [[case Me == Her of
-%        true -> ok;
-%        false -> kvs_users:subscribe(Me#user.username, Her#user.username)
-%    end || Her <- UserList] || Me <- UserList].
+
+    [ kvs_user:subscribe(Me#user.username, Her#user.username) || Her <- UserList, Me <- UserList, Her /= Me ],
+    [ kvs_user:init_mq(U) || U <- UserList ],
+
+    ok.
 
 add_sample_packages() -> kvs_membership:add_sample_data().
 version() -> ?INFO("version: ~p", [1]).

+ 1 - 1
src/kvs_acl.erl

@@ -12,7 +12,7 @@ define_access({user, _Username} = Accessor, Resource, Action) -> do_define_acces
 define_access({user_type, _Usertype} = Accessor, Resource, Action) -> do_define_access(Accessor, Resource, Action);
 define_access({ip, _Ip} = Accessor, Resource, Action) -> do_define_access(Accessor, Resource, Action).
 
-do_define_access(Accessor, Resource, Action) -> kvs:acl_add_entry(select_type(Resource), Accessor, Action).
+do_define_access(Accessor, Resource, Action) -> acl_add_entry(select_type(Resource), Accessor, Action).
 
 check(Keys) ->
     Acls = [Acl || {ok, Acl = #acl_entry{}} <- [kvs:get(acl_entry, Key) || Key <- Keys]],

+ 23 - 22
src/kvs_user.erl

@@ -98,37 +98,38 @@ update_user(#user{username=UId,name=Name,surname=Surname} = NewUser) ->
     end.
 
 subscription_mq(Type, Action, MeId, ToId) ->
-    {ok, Channel} = mqs:open([]),
-    Routes = case Type of
-                 user -> rk_user_feed(ToId);
-                 group -> rk_group_feed(ToId)
-             end,
-    case Action of
-        add -> bind_user_exchange(Channel, MeId, Routes);
-        remove -> unbind_user_exchange(Channel, MeId, Routes)
-    end,
-    mqs_channel:close(Channel).
+    case mqs:open([]) of
+        {ok,Channel} -> Routes = case Type of user -> rk_user_feed(ToId); group -> rk_group_feed(ToId) end,
+                        case Action of
+                            add -> bind_user_exchange(Channel, MeId, Routes);
+                            remove -> unbind_user_exchange(Channel, MeId, Routes) end,
+                        mqs_channel:close(Channel);
+        {error,Reason} -> ?ERROR("subscription_mq error: ~p",[Reason]) end.
 
 init_mq(User=#user{}) ->
-    Groups = kvs_group:list_groups_per_user(User),
+    Groups = kvs_group:participate(User),
     ?INFO("~p init mq. users: ~p", [User, Groups]),
     UserExchange = ?USER_EXCHANGE(User#user.username),
     ExchangeOptions = [{type, <<"fanout">>}, durable, {auto_delete, false}],
-    {ok, Channel} = mqs:open([]),
-    ?INFO("Cration Exchange: ~p,",[{Channel,UserExchange,ExchangeOptions}]),
-    mqs_channel:create_exchange(Channel, UserExchange, ExchangeOptions), ?INFO("Created OK"),
-    Relations = build_user_relations(User, Groups),
-    [bind_user_exchange(Channel, User, RK) || RK <- Relations],
-    mqs_channel:close(Channel);
+    case mqs:open([]) of
+        {ok, Channel} ->
+            ?INFO("Cration Exchange: ~p,",[{Channel,UserExchange,ExchangeOptions}]),
+            mqs_channel:create_exchange(Channel, UserExchange, ExchangeOptions),
+            Relations = build_user_relations(User, Groups),
+            [bind_user_exchange(Channel, User, RK) || RK <- Relations],
+            mqs_channel:close(Channel);
+        {error,Reason} -> ?ERROR("init_mq error: ~p",[Reason]) end;
 
 init_mq(Group=#group{}) ->
     GroupExchange = ?GROUP_EXCHANGE(Group#group.username),
     ExchangeOptions = [{type, <<"fanout">>}, durable, {auto_delete, false}],
-    {ok, Channel} = mqs:open([]),
-    ok = mqs_channel:create_exchange(Channel, GroupExchange, ExchangeOptions),
-    Relations = build_group_relations(Group),
-    [bind_group_exchange(Channel, Group, RK) || RK <- Relations],
-    mqs_channel:close(Channel).
+    case mqs:open([]) of
+        {ok, Channel} ->
+            mqs_channel:create_exchange(Channel, GroupExchange, ExchangeOptions),
+            Relations = build_group_relations(Group),
+            [bind_group_exchange(Channel, Group, RK) || RK <- Relations],
+            mqs_channel:close(Channel);
+        {error, Reason} -> ?ERROR("init_mq error: ~p",[Reason]) end.
 
 build_user_relations(User, Groups) -> [
     rk( [db, user, User, put] ),