(* 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_words db = T.execute db "CREATE TABLE IF NOT EXISTS words (word1 varchar(256), word2 varchar(256), counter int)" (fun _ -> ()) let create_index_word1word2 db = T.execute db "CREATE INDEX IF NOT EXISTS word1word2 ON words (word1, word2)" (fun _ -> ()) let select_cond db ~w1 ~w2 = let get_row stmt = (T.get_column_Int stmt 0) in let set_params stmt = T.set_param_Text stmt 0 w1; T.set_param_Text stmt 1 w2; () in T.select1 db "SELECT counter FROM words WHERE word1=@w1 AND word2=@w2 LIMIT 1" set_params get_row let increment db ~w1 ~w2 = let set_params stmt = T.set_param_Text stmt 0 w1; T.set_param_Text stmt 1 w2; () in T.execute db "UPDATE words SET counter=counter+1 WHERE word1=@w1 AND word2=@w2" set_params let add_new db ~w1 ~w2 = let set_params stmt = T.set_param_Text stmt 0 w1; T.set_param_Text stmt 1 w2; () in T.execute db "INSERT INTO words (word1, word2, counter) VALUES(@w1, @w2, 1)" set_params let count_word1 db ~word = let get_row stmt = (T.get_column_Int stmt 0) in let set_params stmt = T.set_param_Text stmt 0 word; () in T.select1 db "SELECT sum(counter) FROM words WHERE word1=@word LIMIT 1" set_params get_row let select_by_word1 db ~word callback = let invoke_callback stmt = callback (T.get_column_Text stmt 0) (T.get_column_Int stmt 1) in let set_params stmt = T.set_param_Text stmt 0 word; () in T.select db "SELECT word2, counter FROM words WHERE word1=@word" set_params invoke_callback let count_all db = let get_row stmt = (T.get_column_Int stmt 0) in T.select1 db "SELECT COUNT(*) FROM words LIMIT 1" (fun _ -> ()) get_row let select_all_notempty db callback = let invoke_callback stmt = callback (T.get_column_Text stmt 0) (T.get_column_Text stmt 1) (T.get_column_Int stmt 2) in T.select db "SELECT word1, word2, counter FROM words WHERE word1!='' AND word2!='' ORDER BY counter DESC LIMIT 10" (fun _ -> ()) invoke_callback end (* module Make *)