aboutsummaryrefslogtreecommitdiffstats
path: root/lib/scl
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lib/scl/executor.ml84
-rw-r--r--lib/scl/sublanguage.ml13
2 files changed, 46 insertions, 51 deletions
diff --git a/lib/scl/executor.ml b/lib/scl/executor.ml
index 6cb17b8..d48d852 100644
--- a/lib/scl/executor.ml
+++ b/lib/scl/executor.ml
@@ -6,72 +6,68 @@ type cursor_batch = {
has_more : bool;
}
-type exec_result =
- | Batch of cursor_batch
- | Closed of Management.Database.t
+type exec_result = Batch of cursor_batch | Closed of Management.Database.t
let sessions : Session.t option ref = ref None
-
let set_sessions s = sessions := Some s
module Make (Storage : Management.Physical.S) = struct
- module DrlExec = Drl.Executor.Make(Storage)
- module Alg = Algebra.Make(Storage)
+ module DrlExec = Drl.Executor.Make (Storage)
+ module Alg = Algebra.Make (Storage)
type error =
- | ParseError of string
- | QueryError of DrlExec.error
+ | ParseError of string
+ | QueryError of DrlExec.error
| CursorError of string
let sexp_of_error e =
let open Sexplib.Sexp in
match e with
- | ParseError s -> List [Atom "parse-error"; Atom s]
- | QueryError e -> DrlExec.sexp_of_error e
- | CursorError s -> List [Atom "cursor-error"; Atom s]
+ | ParseError s -> List [ Atom "parse-error"; Atom s ]
+ | QueryError e -> DrlExec.sexp_of_error e
+ | CursorError s -> List [ Atom "cursor-error"; Atom s ]
let get_sessions () =
match !sessions with
| Some s -> Ok s
- | None -> Error (CursorError "The session registry has not been initialised; ensure `set_sessions` is called at startup.")
+ | None ->
+ Error
+ (CursorError
+ "The session registry has not been initialised; ensure \
+ `set_sessions` is called at startup.")
let ( let* ) = Result.bind
- let execute
- (storage : Storage.t)
- (db : Management.Database.t)
- (stmt : Ast.statement)
- : (exec_result, error) result =
+ let execute (storage : Storage.t) (db : Management.Database.t)
+ (stmt : Ast.statement) : (exec_result, error) result =
match stmt with
| Ast.Begin { query; limit } ->
- let* reg = get_sessions () in
- let* rel =
- DrlExec.execute storage db query
- |> Result.map_error (fun e -> QueryError e)
- in
- let gen = Alg.to_generator storage rel in
- let query_str = Drl.Parser.to_string query in
- let cur = Session.register reg ~db ~query:query_str ~generator:gen in
- let batch = Option.value ~default:default_batch limit in
- let* (rows, has_more) =
- Session.fetch reg ~id:cur.Session.id ~limit:batch
- |> Result.map_error (fun s -> CursorError s)
- in
- Ok (Batch { cursor_id = cur.Session.id; rows; has_more })
-
+ let* reg = get_sessions () in
+ let* rel =
+ DrlExec.execute storage db query
+ |> Result.map_error (fun e -> QueryError e)
+ in
+ let gen = Alg.to_generator storage rel in
+ let query_str = Drl.Parser.to_string query in
+ let cur = Session.register reg ~db ~query:query_str ~generator:gen in
+ let batch = Option.value ~default:default_batch limit in
+ let* rows, has_more =
+ Session.fetch reg ~id:cur.Session.id ~limit:batch
+ |> Result.map_error (fun s -> CursorError s)
+ in
+ Ok (Batch { cursor_id = cur.Session.id; rows; has_more })
| Ast.Fetch { cursor; limit } ->
- let* reg = get_sessions () in
- let batch = Option.value ~default:default_batch limit in
- let* (rows, has_more) =
- Session.fetch reg ~id:cursor ~limit:batch
- |> Result.map_error (fun s -> CursorError s)
- in
- Ok (Batch { cursor_id = cursor; rows; has_more })
-
+ let* reg = get_sessions () in
+ let batch = Option.value ~default:default_batch limit in
+ let* rows, has_more =
+ Session.fetch reg ~id:cursor ~limit:batch
+ |> Result.map_error (fun s -> CursorError s)
+ in
+ Ok (Batch { cursor_id = cursor; rows; has_more })
| Ast.Close { cursor } ->
- let* reg = get_sessions () in
- Session.close reg ~id:cursor;
- Ok (Closed db)
+ let* reg = get_sessions () in
+ Session.close reg ~id:cursor;
+ Ok (Closed db)
end
-module Memory = Make(Management.Physical.Memory)
+module Memory = Make (Management.Physical.Memory)
diff --git a/lib/scl/sublanguage.ml b/lib/scl/sublanguage.ml
index 7098ced..b39e720 100644
--- a/lib/scl/sublanguage.ml
+++ b/lib/scl/sublanguage.ml
@@ -1,9 +1,9 @@
module Make (Storage : Management.Physical.S) = struct
- module Exec = Executor.Make(Storage)
+ module Exec = Executor.Make (Storage)
type storage = Storage.t
- type ast = Ast.statement
- type error = Exec.error
+ type ast = Ast.statement
+ type error = Exec.error
let name = "scl"
@@ -16,11 +16,10 @@ module Make (Storage : Management.Physical.S) = struct
Exec.execute storage db ast
|> Result.map (function
| Executor.Batch { cursor_id; rows; has_more } ->
- Sublanguage.Cursor { cursor_id; rows; has_more }
- | Executor.Closed db ->
- Sublanguage.Transition (db, "cursor closed"))
+ Sublanguage.Cursor { cursor_id; rows; has_more }
+ | Executor.Closed db -> Sublanguage.Transition (db, "cursor closed"))
let sexp_of_error = Exec.sexp_of_error
end
-module Memory = Make(Management.Physical.Memory)
+module Memory = Make (Management.Physical.Memory)