Module Collection.Change_feed

module Mode : sig ... end

Pull-model latest-version change feed operations.

module Start_from : sig ... end
module Scope : sig ... end
type page = {
  1. rid : string;
  2. documents : (string * Document.list_result_meta_data option) list;
  3. count : int;
  4. continuation : string;
  5. has_more_pages : bool;
    (*

    Presence of x-ms-continuation; Azure may omit it for change feed. Continue with Continuation continuation until 304, as drain does.

    *)
  6. session_token : string option;
}
type drain_result = {
  1. pages : page list;
  2. checkpoint : string;
  3. caught_up : bool;
}
val read : ?mode:Mode.t -> ?start_from:Start_from.t -> ?scope:Scope.t -> ?max_item_count:int -> ?session_token:string -> ?timeout:float -> string -> string -> (int * Cosmos_eio.Database_intf.Response_headers.t * page option, Database_intf.cosmos_error) Stdlib.result Database_intf.io

read db coll reads one page. Ok (304, _, None) means the feed is idle, not that the request failed. Persist page.continuation and resume with Start_from.Continuation. A supplied timeout applies independently to each request attempt; exhausted 429 retries are reported as Timeout_error.

val is_partition_split : Database_intf.cosmos_error -> bool
val drain : ?mode:Mode.t -> ?start_from:Start_from.t -> ?scope:Scope.t -> ?max_item_count:int -> ?max_pages:int -> ?timeout:float -> string -> string -> (drain_result, Database_intf.cosmos_error) Stdlib.result Database_intf.io
val fold : ?mode:Mode.t -> ?start_from:Start_from.t -> ?scope:Scope.t -> ?max_item_count:int -> ?poll_interval:float -> ?max_polls:int -> ?timeout:float -> string -> string -> init:'acc -> f:('acc -> page -> ('acc, string) Stdlib.result Database_intf.io) -> ('acc * string, Database_intf.cosmos_error) Stdlib.result Database_intf.io