aboutsummaryrefslogtreecommitdiffstats
path: root/lib/management/branch.ml
diff options
context:
space:
mode:
authorEstevan Castilho <tevo@riajuu.net>2026-05-27 23:24:12 +0000
committerGitHub <noreply@github.com>2026-05-27 23:24:12 +0000
commit9dc0391443ca16bf1ab3114d002aad83872f8a73 (patch)
treee4f78a2533e5e633b733c1ea21d0159aeca79b75 /lib/management/branch.ml
parentf9097a0562ea8b40d40a19059578a9280b945de4 (diff)
downloadSakura-9dc0391443ca16bf1ab3114d002aad83872f8a73.tar.gz
Sakura-9dc0391443ca16bf1ab3114d002aad83872f8a73.zip
Improve the error handling situation (#71)
* Sketches of a condition system * `Condition.condition` -> `Condition.t` * Migrate `NT` over * Migrate `Branch` over * Migrate `Sublanguage` et al. over * Migrate the PRL over * Migrate the DRL over * Migrate the DML over * Have `Qualified_name.try_parse` return a `Condition.t` * Migrate the DDL over * Migrate the VCL over * Migrate the SCL over * Migrate the ICL over * Migrate the parsers over * Just inherit the errors from NT and the sublanguages * Migrate `Management.Physical` over * Migrate `Configuration` over * Migrate `Management.Branch` over * Migrate `Transport` over * Migrate `System` over * Migrate `Server` over * Include messages on on all conditions * A prettier stringifier
Diffstat (limited to 'lib/management/branch.ml')
-rw-r--r--lib/management/branch.ml11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/management/branch.ml b/lib/management/branch.ml
index ea9d525..4ba0983 100644
--- a/lib/management/branch.ml
+++ b/lib/management/branch.ml
@@ -12,7 +12,12 @@ let branch_key name = "branch:" ^ name
let head_key = "head"
let names_key = "branch_names"
-module Make (Storage : Physical.S with type error = string) = struct
+module Make (Storage : Physical.S) = struct
+ module Error = struct
+ open Condition
+ let branch_not_found name = condition "branch-not-found" "Branch not found" ("name" |=| (of_string name))
+ end
+
let load_names storage =
match Storage.load_raw storage names_key with
| Ok (Some bytes) -> (Marshal.from_bytes bytes 0 : string list)
@@ -56,7 +61,7 @@ module Make (Storage : Physical.S with type error = string) = struct
let record = { name; tip } in
let bytes = Marshal.to_bytes record [] in
Storage.store_raw storage (branch_key name) bytes
- | Ok None -> Error ("Branch not found: " ^ name)
+ | Ok None -> Error (Error.branch_not_found name)
| Error e -> Error e
let list storage =
@@ -70,7 +75,7 @@ module Make (Storage : Physical.S with type error = string) = struct
names
in
Ok branches
-(*
+(*
let branch_relation storage : Relation.t =
let schema =
Schema.empty |> Schema.add "name" "string" |> Schema.add "hash" "string"