1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
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
|