diff options
| author | Marcos Magueta <maguetamarcos@gmail.com> | 2026-04-03 16:04:05 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-04-03 16:04:05 -0300 |
| commit | c5bc3a4992b4968780c286a084ad7c02b2b58f1e (patch) | |
| tree | 08968488ad87aeb37fb0178d063816b7765d546c /lib/manipulation.mli | |
| parent | 013cbf09e4ea9871311bf52b6873c43fc9be5441 (diff) | |
| download | Sakura-c5bc3a4992b4968780c286a084ad7c02b2b58f1e.tar.gz Sakura-c5bc3a4992b4968780c286a084ad7c02b2b58f1e.zip | |
Polarity walker, constraint and manipulation refactor with batteries
Diffstat (limited to '')
| -rw-r--r-- | lib/manipulation.mli | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/lib/manipulation.mli b/lib/manipulation.mli new file mode 100644 index 0000000..2a52b5c --- /dev/null +++ b/lib/manipulation.mli @@ -0,0 +1,137 @@ +type error = + | RelationNotFound of string + | RelationAlreadyExists of string + | TupleNotFound of Conventions.Hash.t + | DuplicateTuple of Conventions.Hash.t + | ConstraintViolation of string + | StorageError of string + +val string_of_error : error -> string +val sexp_of_error : error -> Sexplib.Sexp.t + +type 'a result = ('a, error) Result.t + +module Schema = Schema + +val hash_tuple : Tuple.materialized -> Conventions.Hash.t + +module Make (Storage : Management.Physical.S) : sig + type storage = Storage.t + type nonrec error = error + + val of_string_error : string -> error + + val store_database : + storage -> Management.Database.t -> (unit, error) Result.t + + val load_relation : + storage -> Conventions.Hash.t -> (Relation.t option, error) Result.t + + val load_database : + storage -> + Conventions.Hash.t -> + (Management.Database.t option, error) Result.t + + val load_tuple : + storage -> Conventions.Hash.t -> (Tuple.materialized option, error) Result.t + + val load_tuples : + storage -> + Conventions.Hash.t list -> + (Tuple.materialized list, error) Result.t + + val create_tuple : + storage -> + Management.Database.t -> + Relation.t -> + Tuple.materialized -> + (Management.Database.t * Relation.t * Conventions.Hash.t, error) Result.t + + val create_tuples : + storage -> + Management.Database.t -> + Relation.t -> + Tuple.materialized list -> + ( Management.Database.t * Relation.t * Conventions.Hash.t list, + error ) + Result.t + + val retract_tuple : + storage -> + Management.Database.t -> + Relation.t -> + tuple_hash:Conventions.Hash.t -> + (Management.Database.t * Relation.t, error) Result.t + + val register_domain : + storage -> + Management.Database.t -> + Domain.t -> + (Management.Database.t, error) Result.t + + val create_database : + storage -> name:string -> (Management.Database.t, error) Result.t + + val database_history : Management.Database.t -> Conventions.Hash.t list + + val create_relation : + storage -> + Management.Database.t -> + name:string -> + schema:Schema.t -> + (Management.Database.t * Relation.t, error) Result.t + + val create_immutable_relation : + storage -> + Management.Database.t -> + name:string -> + schema:Schema.t -> + generator:Generator.t -> + membership_criteria:(Tuple.t -> bool) -> + cardinality:Conventions.Cardinality.t -> + (Management.Database.t * Relation.t, error) Result.t + + val retract_relation : + storage -> + Management.Database.t -> + name:string -> + Management.Database.t result + + val clear_relation : + storage -> + Management.Database.t -> + Relation.t -> + (Management.Database.t * Relation.t, error) Result.t + + val register_constraint : + storage -> + Management.Database.t -> + constraint_name:string -> + relation_name:string -> + body:Constraint.t -> + (Management.Database.t, error) Result.t + + val tuple_hashes : Relation.t -> Conventions.Hash.t list + val get_relation : Management.Database.t -> name:string -> Relation.t option + val tuple_count : Relation.t -> int + val tuple_exists : Relation.t -> Conventions.Hash.t -> bool + + val attach_constraint : + storage -> + Management.Database.t -> + constraint_name:string -> + relation_name:string -> + body:Constraint.t -> + timing:Constraint.timing -> + (Management.Database.t, error) Result.t + + val check_deferred_constraints : + storage -> Management.Database.t -> (unit, error) Result.t + + val commit : + storage -> Management.Database.t -> (Management.Database.t, error) Result.t +end + +module Memory : sig + include module type of Make (Management.Physical.Memory) +end |
