a database layer insipred by caqti and ecto
at main 1.2 kB view raw
1open Repodb 2 3type user = { 4 id : int; 5 name : string; 6 email : string; 7 age : int; 8 active : bool; 9} 10 11let make_user ?(id = 0) ?(name = "") ?(email = "") ?(age = 0) ?(active = true) 12 () = 13 { id; name; email; age; active } 14 15let users_table = Schema.table "users" 16 17let id_field : (user, int) Field.t = 18 Field.make ~table_name:"users" ~name:"id" ~ty:Types.int 19 ~get:(fun u -> u.id) 20 ~set:(fun v u -> { u with id = v }) 21 ~primary_key:true () 22 23let name_field : (user, string) Field.t = 24 Field.make ~table_name:"users" ~name:"name" ~ty:Types.string 25 ~get:(fun u -> u.name) 26 ~set:(fun v u -> { u with name = v }) 27 () 28 29let email_field : (user, string) Field.t = 30 Field.make ~table_name:"users" ~name:"email" ~ty:Types.string 31 ~get:(fun u -> u.email) 32 ~set:(fun v u -> { u with email = v }) 33 () 34 35let age_field : (user, int) Field.t = 36 Field.make ~table_name:"users" ~name:"age" ~ty:Types.int 37 ~get:(fun u -> u.age) 38 ~set:(fun v u -> { u with age = v }) 39 () 40 41let active_field : (user, bool) Field.t = 42 Field.make ~table_name:"users" ~name:"active" ~ty:Types.bool 43 ~get:(fun u -> u.active) 44 ~set:(fun v u -> { u with active = v }) 45 ()