Erlang和Ejabberd中的典型SQL查询
我需要一些关于用Erlang编写典型SQL查询的帮助。我只是想阻止基于此查询记录脱机消息 要将此查询置于此函数的开头Erlang和Ejabberd中的典型SQL查询,erlang,ejabberd,Erlang,Ejabberd,我需要一些关于用Erlang编写典型SQL查询的帮助。我只是想阻止基于此查询记录脱机消息 要将此查询置于此函数的开头 store_offline_msg(Host, {User, _Server}, Msgs, Len, MaxOfflineMsgs, odbc) -> Count = if MaxOfflineMsgs =/= infinity -> Len + count_offline_messages(User, Host);
store_offline_msg(Host, {User, _Server}, Msgs, Len, MaxOfflineMsgs, odbc) ->
Count = if MaxOfflineMsgs =/= infinity ->
Len + count_offline_messages(User, Host);
true -> 0
end,
if Count > MaxOfflineMsgs -> discard_warn_sender(Msgs);
Mysql表
ID | user | touser | starttime | end
586 | my_gmail.com | touser_gmail.com | 2014-10-29 14:03:16 | 60
我需要的查询是检查:
如果“用户”和“用户”在此表中有记录,且当前时间介于starttime和starttime+end之间(60秒)
请帮我,我很感激 以下是我如何实施它并解决我的问题。
Check = case catch ejabberd_odbc:sql_query(
LServer,
["select id from archive_disable_user"
" where ( ( user ='", To, "' "
" and tuser='", From , "' ) "
" or ( user ='", From, "' "
" and tuser='", To , "' ) )"
" and ( ( UNIX_TIMESTAMP(start) + end ) > UNIX_TIMESTAMP()); "]) of
{selected, ["id"], Rs} ->
Rcheck = len(Rs),
if
Rcheck == 0 ->
false;
true->
true
end;
_-> false
end,
Check.
现在还不清楚您是在问(1)如何编写SQL查询,(2)如何从Erlang与MySQL对话,还是(3)如何使用SQL查询的结果来影响ejabberd。我只是想帮助您在Erlang中编写SQL查询,这应该是ejabberd的方式。我将简单地用SQL编写同一个查询,然后您可以在erlang中再次编写它(如果可以的话)。