(* DO NOT EDIT MANUALLY *) (* *) (* generated by sqlgg 0.2.2-86-gf8873c3 on 2009-07-30T20:07Z *) (* visit http://ygrek.org/p/sqlgg/ *) module Make (T : Sqlgg_traits.M) = struct let create_talkers db = T.execute db "CREATE TABLE IF NOT EXISTS talkers (jid varchar, nick varchar, room varchar, words int, me int, sentences int)" (fun _ -> ()) let create_index1 db = T.execute db "CREATE INDEX IF NOT EXISTS talkersidx ON talkers (jid, room)" (fun _ -> ()) let create_index2 db = T.execute db "CREATE INDEX IF NOT EXISTS words_idx ON talkers (words)" (fun _ -> ()) let test_nick db ~nick ~room callback = let invoke_callback stmt = callback (T.get_column_Int stmt 0) in let set_params stmt = T.set_param_Text stmt 0 nick; T.set_param_Text stmt 1 room; () in T.select db "SELECT COUNT(*) FROM talkers WHERE nick=@nick AND room=@room" set_params invoke_callback let test_jid db ~jid ~room callback = let invoke_callback stmt = callback (T.get_column_Int stmt 0) in let set_params stmt = T.set_param_Text stmt 0 jid; T.set_param_Text stmt 1 room; () in T.select db "SELECT COUNT(*) FROM talkers WHERE jid=@jid AND room=@room" set_params invoke_callback let update_by_nick db ~words ~se ~me ~nick ~room = let set_params stmt = T.set_param_Int stmt 0 words; T.set_param_Int stmt 1 se; T.set_param_Int stmt 2 me; T.set_param_Text stmt 3 nick; T.set_param_Text stmt 4 room; () in T.execute db "UPDATE talkers SET words=words+@words, sentences=sentences+@se, me=me+@me WHERE nick=@nick AND room=@room" set_params let update_by_jid db ~words ~se ~me ~jid ~room = let set_params stmt = T.set_param_Int stmt 0 words; T.set_param_Int stmt 1 se; T.set_param_Int stmt 2 me; T.set_param_Text stmt 3 jid; T.set_param_Text stmt 4 room; () in T.execute db "UPDATE talkers SET words=words+@words, sentences=sentences+@se, me=me+@me WHERE jid=@jid AND room=@room" set_params let insert_new db ~jid ~nick ~room ~words ~me ~sentences = let set_params stmt = T.set_param_Text stmt 0 jid; T.set_param_Text stmt 1 nick; T.set_param_Text stmt 2 room; T.set_param_Int stmt 3 words; T.set_param_Int stmt 4 me; T.set_param_Int stmt 5 sentences; () in T.execute db "INSERT INTO talkers (jid, nick, room, words, me, sentences) VALUES (@jid,@nick,@room,@words,@me,@sentences)" set_params let select_talkers db ~room ~nick ~limit callback = let invoke_callback stmt = callback (T.get_column_Text stmt 0) (T.get_column_Int stmt 1) (T.get_column_Int stmt 2) (T.get_column_Int stmt 3) in let set_params stmt = T.set_param_Text stmt 0 room; T.set_param_Text stmt 1 nick; T.set_param_Int stmt 2 limit; () in T.select db "SELECT nick, words, me, sentences FROM talkers WHERE room=@room AND nick LIKE @nick ORDER BY words DESC, sentences ASC LIMIT @limit" set_params invoke_callback end (* module Make *)