Repodb.Embedded.Make

repodb · API reference

Parameters

module Json : JSON

Signature

type json = Json.t
type 'a t = {
  data : 'a;
  fields : string list;
  source : source;
}
and source = 
  | JsonColumn of string
  | Virtual
type 'a schema = {
  name : string;
  decode : json -> ('a, string) result;
  encode : 'a -> json;
  fields : string list;
  default : 'a option;
}
val schema : 
  name:string ->
  decode:(json -> ('a, string) result) ->
  encode:('a -> json) ->
  fields:string list ->
  ?default:'a ->
  unit ->
  'a schema
val from_json : 'a schema -> json -> ('a t, string) result
val to_json : 'a schema -> 'a t -> json
val from_json_string : 'a schema -> string -> ('a t, string) result
val to_json_string : 'a schema -> 'a t -> string
val data : 'a t -> 'a
val fields : 'a schema -> string list
val update : 'a t -> data:'b -> 'b t
type 'a embeds_one = 'a t option
type 'a embeds_many = 'a t list
val embeds_one_from_json : 'a schema -> json -> ('a t option, string) result
val embeds_one_to_json : 'a schema -> 'a t option -> json
val embeds_many_from_json : 'a schema -> Json.t -> ('a t list, string) result
val embeds_many_to_json : 'a schema -> 'a t list -> Json.t
val cast_embedded : 
  'a schema ->
  (string * string) list ->
  fields:string list ->
  ('a t, string) result
val validate_embedded : ('a -> (unit, 'b) result) -> 'a t -> ('a t, 'b) result