sig
  module Schema :
    sig
      type field_options = [ `Index | `Optional | `Unique ]
      type table_options = { unique : string list list; }
      type s
      type g
      val text :
        ?flags:Sql_orm.Schema.field_options list ->
        string -> Sql_orm.Schema.s
      val blob :
        ?flags:Sql_orm.Schema.field_options list ->
        string -> Sql_orm.Schema.s
      val real :
        ?flags:Sql_orm.Schema.field_options list ->
        string -> Sql_orm.Schema.s
      val date :
        ?flags:Sql_orm.Schema.field_options list ->
        string -> Sql_orm.Schema.s
      val integer :
        ?flags:Sql_orm.Schema.field_options list ->
        string -> Sql_orm.Schema.s
      val foreign :
        ?flags:Sql_orm.Schema.field_options list ->
        string -> string -> Sql_orm.Schema.s
      val foreign_many :
        ?flags:Sql_orm.Schema.field_options list ->
        string -> string -> Sql_orm.Schema.s
      type collection
      val make :
        (string * Sql_orm.Schema.s list * (string list * string list) list *
         Sql_orm.Schema.table_options)
        list -> Sql_orm.Schema.collection
      val default_opts : Sql_orm.Schema.table_options
    end
  val generate : ?debug:bool -> Sql_orm.Schema.collection -> string -> unit
end