|
@@ -20,8 +20,6 @@
|
|
|
|
|
|
start() -> DBA = ?DBA, DBA:start().
|
|
start() -> DBA = ?DBA, DBA:start().
|
|
dir() -> DBA = ?DBA, DBA:dir().
|
|
dir() -> DBA = ?DBA, DBA:dir().
|
|
-purchases(UserId) -> DBA = ?DBA, DBA:purchases(UserId).
|
|
|
|
-transactions(UserId) -> DBA = ?DBA, DBA:transactions(UserId).
|
|
|
|
stop() -> DBA = ?DBA, DBA:stop().
|
|
stop() -> DBA = ?DBA, DBA:stop().
|
|
initialize() -> DBA = ?DBA, DBA:initialize().
|
|
initialize() -> DBA = ?DBA, DBA:initialize().
|
|
delete() -> DBA = ?DBA, DBA:delete().
|
|
delete() -> DBA = ?DBA, DBA:delete().
|
|
@@ -38,43 +36,27 @@ traversal(RecordType, PrevPos, Next, Count)->
|
|
[R | traversal(RecordType, PrevPos, Prev, Count1)]
|
|
[R | traversal(RecordType, PrevPos, Prev, Count1)]
|
|
end.
|
|
end.
|
|
|
|
|
|
-
|
|
|
|
init_db() ->
|
|
init_db() ->
|
|
case kvs:get(user,"alice") of
|
|
case kvs:get(user,"alice") of
|
|
- {error,_} ->
|
|
|
|
-% DBA = ?DBA,
|
|
|
|
-% DBA:init_db(),
|
|
|
|
-% kvs_membership:add_sample_data(),
|
|
|
|
|
|
+ {error,_} ->
|
|
add_seq_ids(),
|
|
add_seq_ids(),
|
|
kvs_account:create_account(system),
|
|
kvs_account:create_account(system),
|
|
add_sample_users(),
|
|
add_sample_users(),
|
|
add_sample_packages(),
|
|
add_sample_packages(),
|
|
|
|
+ add_payments(),
|
|
add_translations();
|
|
add_translations();
|
|
-% case is_production() of
|
|
|
|
-% false ->
|
|
|
|
-% add_purchases();
|
|
|
|
-% true ->
|
|
|
|
-% do_nothing
|
|
|
|
-% end;
|
|
|
|
- {ok,_} -> ignore
|
|
|
|
- end.
|
|
|
|
|
|
+ {ok,_} -> ignore end.
|
|
|
|
|
|
-is_production() ->
|
|
|
|
- case kvs:get(config, "debug/production", false) of
|
|
|
|
- {ok, true} -> true;
|
|
|
|
- _ -> false
|
|
|
|
- end.
|
|
|
|
-
|
|
|
|
-add_purchases() ->
|
|
|
|
- {ok, Pkg1} = kvs_membership:get_package(1),
|
|
|
|
- {ok, Pkg2} = kvs_membership:get_package(2),
|
|
|
|
- {ok, Pkg3} = kvs_membership:get_package(3),
|
|
|
|
- {ok, Pkg4} = kvs_membership:get_package(4),
|
|
|
|
|
|
+add_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} ],
|
|
PList = [{"doxtop", Pkg1},{"maxim", Pkg2},{"maxim",Pkg4}, {"kate", Pkg3} ],
|
|
- [ok = add_purchase(U, P) || {U, P} <- PList],
|
|
|
|
|
|
+ [ok = add_payment(U, P) || {U, P} <- PList],
|
|
ok.
|
|
ok.
|
|
|
|
|
|
-add_purchase(UserId, Package) ->
|
|
|
|
|
|
+add_payment(UserId, Package) ->
|
|
{ok, MPId} = kvs_payment:add_payment(#payment{user_id=UserId, membership=Package}),
|
|
{ok, MPId} = kvs_payment:add_payment(#payment{user_id=UserId, membership=Package}),
|
|
kvs_payment:set_payment_state(MPId, ?MP_STATE_DONE, undefined).
|
|
kvs_payment:set_payment_state(MPId, ?MP_STATE_DONE, undefined).
|
|
|
|
|
|
@@ -87,6 +69,8 @@ add_seq_ids() ->
|
|
end,
|
|
end,
|
|
Init("meeting"),
|
|
Init("meeting"),
|
|
Init("user_transaction"),
|
|
Init("user_transaction"),
|
|
|
|
+ Init("user_product"),
|
|
|
|
+ Init("user_payment"),
|
|
Init("transaction"),
|
|
Init("transaction"),
|
|
Init("membership"),
|
|
Init("membership"),
|
|
Init("payment"),
|
|
Init("payment"),
|
|
@@ -97,8 +81,7 @@ add_seq_ids() ->
|
|
Init("like_entry"),
|
|
Init("like_entry"),
|
|
Init("likes"),
|
|
Init("likes"),
|
|
Init("one_like"),
|
|
Init("one_like"),
|
|
- Init("comment"),
|
|
|
|
- Init("save_table").
|
|
|
|
|
|
+ Init("comment").
|
|
|
|
|
|
add_translations() ->
|
|
add_translations() ->
|
|
lists:foreach(fun({English, Lang, Word}) ->
|
|
lists:foreach(fun({English, Lang, Word}) ->
|
|
@@ -115,18 +98,18 @@ add_sample_users() ->
|
|
|
|
|
|
UserList = [
|
|
UserList = [
|
|
#user{username = "maxim", password="kaka15ra",
|
|
#user{username = "maxim", password="kaka15ra",
|
|
- name = "Maxim", surname = "Sokhatsky", feed = feed_create(),
|
|
|
|
- type = admin, direct = feed_create(),
|
|
|
|
|
|
+ name = "Maxim", surname = "Sokhatsky", feed = kvs_feed:create(),
|
|
|
|
+ type = admin, direct = kvs_feed:create(),
|
|
sex=m,
|
|
sex=m,
|
|
status=ok,
|
|
status=ok,
|
|
- team = create_team("tours"),
|
|
|
|
|
|
+ team = kvs_meeting:create_team("tours"),
|
|
email="maxim.sokhatsky@gmail.com"},
|
|
email="maxim.sokhatsky@gmail.com"},
|
|
#user{username = "doxtop", password="password",
|
|
#user{username = "doxtop", password="password",
|
|
- feed = feed_create(),
|
|
|
|
|
|
+ feed = kvs_feed:create(),
|
|
name = "Andrii Zadorozhnii",
|
|
name = "Andrii Zadorozhnii",
|
|
email="doxtop@synrc.com",
|
|
email="doxtop@synrc.com",
|
|
type=admin,
|
|
type=admin,
|
|
- team = create_team("tours"), direct = feed_create(),
|
|
|
|
|
|
+ team = kvs_meeting:create_team("tours"), direct = kvs_feed:create(),
|
|
status=ok,
|
|
status=ok,
|
|
age={1981,9,29},
|
|
age={1981,9,29},
|
|
register_date={1345,14071,852889}
|
|
register_date={1345,14071,852889}
|
|
@@ -135,10 +118,12 @@ add_sample_users() ->
|
|
|
|
|
|
kvs:put(Groups),
|
|
kvs:put(Groups),
|
|
|
|
|
|
|
|
+ {ok, Quota} = kvs:get(config,"accounts/default_quota", 300),
|
|
|
|
+
|
|
[ begin
|
|
[ begin
|
|
kvs_account:create_account(Me#user.username),
|
|
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_account:transaction(Me#user.username, quota, Quota, #tx_default_assignment{}),
|
|
|
|
+ kvs:put(Me#user{password = kvs:sha(Me#user.password), starred = kvs_feed:create(), pinned = kvs_feed:create()})
|
|
end || Me <- UserList],
|
|
end || Me <- UserList],
|
|
|
|
|
|
kvs_acl:define_access({user, "maxim"}, {feature, admin}, allow),
|
|
kvs_acl:define_access({user, "maxim"}, {feature, admin}, allow),
|
|
@@ -152,16 +137,6 @@ add_sample_users() ->
|
|
add_sample_packages() -> kvs_membership:add_sample_data().
|
|
add_sample_packages() -> kvs_membership:add_sample_data().
|
|
version() -> ?INFO("version: ~p", [1]).
|
|
version() -> ?INFO("version: ~p", [1]).
|
|
|
|
|
|
-% blocking
|
|
|
|
-
|
|
|
|
-block_user(Who, Whom) -> DBA=?DBA, DBA:block_user(Who, Whom).
|
|
|
|
-list_blocks(Who) -> DBA=?DBA, DBA:list_blocks(Who).
|
|
|
|
-unblock_user(Who, Whom) -> DBA=?DBA, DBA:unblock_user(Who, Whom).
|
|
|
|
-list_blocked_me(Me) -> DBA=?DBA, DBA:list_blocked_me(Me).
|
|
|
|
-is_user_blocked(Who, Whom) -> DBA=?DBA, DBA:is_user_blocked(Who, Whom).
|
|
|
|
-
|
|
|
|
-% configs
|
|
|
|
-
|
|
|
|
add_configs() ->
|
|
add_configs() ->
|
|
%% smtp
|
|
%% smtp
|
|
kvs:put(#config{key="smtp/user", value="noreply@synrc.com"}),
|
|
kvs:put(#config{key="smtp/user", value="noreply@synrc.com"}),
|
|
@@ -206,78 +181,18 @@ get(RecordName, Key, Default) ->
|
|
DBA:put({RecordName,Key,Default}),
|
|
DBA:put({RecordName,Key,Default}),
|
|
{ok,Default} end.
|
|
{ok,Default} end.
|
|
|
|
|
|
-get_config(Key, Default) -> {ok, Value} = get(config, Key, Default), Value.
|
|
|
|
-get_word(Word) -> get(ut_word,Word).
|
|
|
|
-get_translation({Lang,Word}) -> DBA=?DBA, DBA:get_translation({Lang,Word}).
|
|
|
|
-
|
|
|
|
-% delete
|
|
|
|
-
|
|
|
|
delete(Keys) -> DBA=?DBA, DBA:delete(Keys).
|
|
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) -> ?INFO("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).
|
|
delete_by_index(Tab, IndexId, IndexVal) -> DBA=?DBA,DBA:delete_by_index(Tab, IndexId, IndexVal).
|
|
-% select
|
|
|
|
-
|
|
|
|
multi_select(RecordName, Keys) -> DBA=?DBA,DBA:multi_select(RecordName, Keys).
|
|
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) -> ?INFO("db:select ~p, ~p",[From,PredicateFunction]), DBA=?DBA, DBA:select(From, PredicateFunction).
|
|
count(RecordName) -> DBA=?DBA,DBA:count(RecordName).
|
|
count(RecordName) -> DBA=?DBA,DBA:count(RecordName).
|
|
all(RecordName) -> DBA=?DBA,DBA:all(RecordName).
|
|
all(RecordName) -> DBA=?DBA,DBA:all(RecordName).
|
|
all_by_index(RecordName, Index, IndexValue) -> DBA=?DBA,DBA:all_by_index(RecordName, Index, IndexValue).
|
|
all_by_index(RecordName, Index, IndexValue) -> DBA=?DBA,DBA:all_by_index(RecordName, Index, IndexValue).
|
|
-
|
|
|
|
-% id generator
|
|
|
|
-
|
|
|
|
next_id(RecordName) -> DBA=?DBA,DBA:next_id(RecordName).
|
|
next_id(RecordName) -> DBA=?DBA,DBA:next_id(RecordName).
|
|
next_id(RecordName, Incr) -> DBA=?DBA,DBA:next_id(RecordName, Incr).
|
|
next_id(RecordName, Incr) -> DBA=?DBA,DBA:next_id(RecordName, Incr).
|
|
next_id(RecordName, Default, Incr) -> DBA=?DBA,DBA:next_id(RecordName, Default, Incr).
|
|
next_id(RecordName, Default, Incr) -> DBA=?DBA,DBA:next_id(RecordName, Default, Incr).
|
|
|
|
|
|
-% browser counter
|
|
|
|
-
|
|
|
|
-delete_browser_counter_older_than(MinTS) -> DBA=?DBA,DBA:delete_browser_counter_older_than(MinTS).
|
|
|
|
-browser_counter_by_game(Game) -> DBA=?DBA,DBA:browser_counter_by_game(Game).
|
|
|
|
-
|
|
|
|
-% invites
|
|
|
|
-
|
|
|
|
-unused_invites() -> DBA=?DBA,DBA:unused_invites().
|
|
|
|
-user_by_verification_code(Code) -> DBA=?DBA,DBA:user_by_verification_code(Code).
|
|
|
|
-user_by_facebook_id(FBId) -> DBA=?DBA,DBA:user_by_facebook_id(FBId).
|
|
|
|
-user_by_email(Email) -> DBA=?DBA,DBA:user_by_email(Email).
|
|
|
|
-user_by_username(Name) -> DBA=?DBA,DBA:user_by_username(Name).
|
|
|
|
-add_invite_to_issuer(User, O) -> DBA=?DBA,DBA:add_invite_to_issuer(User, O).
|
|
|
|
-invite_code_by_issuer(User) -> DBA=?DBA,DBA:invite_code_by_issuer(User).
|
|
|
|
-invite_code_by_user(User) -> DBA=?DBA,DBA:invite_code_by_user(User).
|
|
|
|
-
|
|
|
|
-% game info
|
|
|
|
-
|
|
|
|
-get_save_tables(Id) -> DBA=?DBA,DBA:get_save_tables(Id).
|
|
|
|
-save_game_table_by_id(Id) -> DBA=?DBA,DBA:save_game_table_by_id(Id).
|
|
|
|
-
|
|
|
|
-% feeds
|
|
|
|
-
|
|
|
|
-feed_add_direct_message(FId, User, To, EntryId, Desc, Medias) -> DBA=?DBA,DBA:feed_add_direct_message(FId, User, To, EntryId, Desc, Medias).
|
|
|
|
-feed_add_entry(FId, User, EntryId, Desc, Medias) -> DBA=?DBA,DBA:feed_add_entry(FId, User, EntryId, Desc, Medias).
|
|
|
|
-feed_add_entry(FId, User, To, EntryId, Desc, Medias, Type, SharedBy) -> DBA=?DBA,DBA:feed_add_entry(FId, User, To, EntryId, Desc, Medias, Type, SharedBy).
|
|
|
|
-acl_add_entry(AclId, Accessor, Action) -> DBA=?DBA,DBA:acl_add_entry(AclId, Accessor, Action).
|
|
|
|
-acl_entries(AclId) -> DBA=?DBA,DBA:acl_entries(AclId).
|
|
|
|
-entry_by_id(EntryId) -> DBA=?DBA,DBA:entry_by_id(EntryId).
|
|
|
|
-comment_by_id(CommentId) -> DBA=?DBA,DBA:comment_by_id(CommentId).
|
|
|
|
-comments_by_entry({_EId, _FId} = EntryId) -> DBA=?DBA,DBA:comments_by_entry(EntryId).
|
|
|
|
-entries_in_feed(FeedId) -> DBA=?DBA,DBA:entries_in_feed(FeedId, undefined, all).
|
|
|
|
-entries_in_feed(FeedId, Count) -> DBA=?DBA,DBA:entries_in_feed(FeedId, undefined, Count).
|
|
|
|
-entries_in_feed(FeedId, StartFrom, Count) -> DBA=?DBA, DBA:entries_in_feed(FeedId, StartFrom, Count).
|
|
|
|
-add_comment(FId, User, EntryId, ParentComment, CommentId, Content, Medias) -> DBA=?DBA, DBA:feed_add_comment(FId, User, EntryId, ParentComment, CommentId, Content, Medias).
|
|
|
|
-feed_direct_messages(FId, StartFrom, Count) -> DBA=?DBA, DBA:entries_in_feed(FId, StartFrom, Count).
|
|
|
|
-
|
|
|
|
-% tournaments
|
|
|
|
-
|
|
|
|
-tournament_waiting_queue(TID) -> DBA=?DBA, DBA:tournament_waiting_queue(TID).
|
|
|
|
-join_tournament(UID,TID) -> DBA=?DBA, DBA:join_tournament(UID,TID).
|
|
|
|
-leave_tournament(UID,TID) -> DBA=?DBA, DBA:leave_tournament(UID,TID).
|
|
|
|
-tournament_pop_waiting_player(TID) -> DBA=?DBA, DBA:tournament_pop_waiting_player(TID).
|
|
|
|
-user_tournaments(UID) -> DBA=?DBA, DBA:user_tournaments(UID).
|
|
|
|
-
|
|
|
|
-add_transaction_to_user(User, Tx) -> DBA=?DBA, DBA:add_transaction_to_user(User, Tx).
|
|
|
|
-get_purchases_by_user(User, Count, States) -> DBA=?DBA, DBA:get_purchases_by_user(User, Count, States).
|
|
|
|
-get_purchases_by_user(User, StartFromPurchase, Count, States) -> DBA=?DBA, DBA:get_purchases_by_user(User, StartFromPurchase, Count, States).
|
|
|
|
-
|
|
|
|
make_admin(User) ->
|
|
make_admin(User) ->
|
|
{ok,U} = kvs:get(user, User),
|
|
{ok,U} = kvs:get(user, User),
|
|
kvs:put(U#user{type = admin}),
|
|
kvs:put(U#user{type = admin}),
|
|
@@ -291,16 +206,6 @@ make_rich(User) ->
|
|
kvs_account:transaction(User, internal, Q, #tx_default_assignment{}),
|
|
kvs_account:transaction(User, internal, Q, #tx_default_assignment{}),
|
|
kvs_account:transaction(User, currency, Q * 2, #tx_default_assignment{}).
|
|
kvs_account:transaction(User, currency, Q * 2, #tx_default_assignment{}).
|
|
|
|
|
|
-feed_create() ->
|
|
|
|
- FId = kvs:next_id("feed", 1),
|
|
|
|
- ok = kvs:put(#feed{id = FId} ),
|
|
|
|
- FId.
|
|
|
|
-
|
|
|
|
-create_team(Name) ->
|
|
|
|
- TID = kvs:next_id("team",1),
|
|
|
|
- ok = kvs:put(Team = #team{id=TID,name=Name}),
|
|
|
|
- TID.
|
|
|
|
-
|
|
|
|
list_to_term(String) ->
|
|
list_to_term(String) ->
|
|
{ok, T, _} = erl_scan:string(String++"."),
|
|
{ok, T, _} = erl_scan:string(String++"."),
|
|
case erl_parse:parse_term(T) of
|
|
case erl_parse:parse_term(T) of
|
|
@@ -324,7 +229,7 @@ load_db(Path) ->
|
|
end || E <- AllEntries].
|
|
end || E <- AllEntries].
|
|
|
|
|
|
make_paid_fake(UId) ->
|
|
make_paid_fake(UId) ->
|
|
- put({user_purchase, UId, "fake_purchase"}).
|
|
|
|
|
|
+ put(#payment{user_id=UId,info= "fake_purchase"}).
|
|
|
|
|
|
save(Key, Value) ->
|
|
save(Key, Value) ->
|
|
Dir = ling:trim_from_last(Key, "/"),
|
|
Dir = ling:trim_from_last(Key, "/"),
|
|
@@ -335,37 +240,6 @@ load(Key) ->
|
|
{ok, Bin} = file:read_file(Key),
|
|
{ok, Bin} = file:read_file(Key),
|
|
binary_to_term(Bin).
|
|
binary_to_term(Bin).
|
|
|
|
|
|
-
|
|
|
|
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
|
|
-
|
|
|
|
-handle_notice(["kvs", "group", Owner, "put"] = Route,
|
|
|
|
- Message, #state{owner = Owner, type =Type} = State) ->
|
|
|
|
- ?INFO("queue_action(~p): group put: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
|
|
|
|
- kvs:put(Message),
|
|
|
|
- {noreply, State};
|
|
|
|
-
|
|
|
|
-handle_notice(["kvs", "user", Owner, "put"] = Route,
|
|
|
|
- Message, #state{owner = Owner, type =Type} = State) ->
|
|
|
|
- ?INFO("queue_action(~p): user put: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
|
|
|
|
- kvs:put(Message),
|
|
|
|
- {noreply, State};
|
|
|
|
-
|
|
|
|
-handle_notice(["kvs","system", "put"] = Route,
|
|
|
|
- Message, #state{owner = Owner, type =Type} = State) ->
|
|
|
|
- ?INFO("queue_action(~p): system put: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
|
|
|
|
- kvs:put(Message),
|
|
|
|
- {noreply, State};
|
|
|
|
-
|
|
|
|
-handle_notice(["kvs","system", "delete"] = Route,
|
|
|
|
- Message, #state{owner = Owner, type =Type} = State) ->
|
|
|
|
- ?INFO("queue_action(~p): system delete: Owner=~p, Route=~p, Message=~p", [self(), {Type, Owner}, Route, Message]),
|
|
|
|
- {Where, What} = Message,
|
|
|
|
- kvs:delete(Where, What),
|
|
|
|
- {noreply, State};
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-handle_notice(Route, Message, State) -> error_logger:info_msg("Unknown KVS notice").
|
|
|
|
-
|
|
|
|
coalesce(undefined, B) -> B;
|
|
coalesce(undefined, B) -> B;
|
|
coalesce(A, _) -> A.
|
|
coalesce(A, _) -> A.
|
|
|
|
|