(** Math functions *) let int : Sqlite3.Data.t -> Sqlite3.Data.t = fun data -> match data with (* If the data is already an int, do not change it *) | Sqlite3.Data.INT _ -> data | Sqlite3.Data.FLOAT content -> Sqlite3.Data.INT (Int64.of_float content) | Sqlite3.Data.BLOB content | Sqlite3.Data.TEXT content -> begin match Int64.of_string_opt content with | Some i -> Sqlite3.Data.INT i | None -> begin match Float.of_string_opt content with | Some f -> Sqlite3.Data.INT (Int64.of_float f) | None -> Sqlite3.Data.NULL end end | _ -> Sqlite3.Data.NULL let register : Sqlite3.db -> unit = fun db -> Sqlite3.create_fun1 db "int" int