@@ -7,6 +7,7 @@ module Database.LSMTree.Class (
77 , withTableNew
88 , withTableFromSnapshot
99 , withTableDuplicate
10+ , withTableUnion
1011 , withCursor
1112 , module Common
1213 , module Types
@@ -17,7 +18,8 @@ import Data.Kind (Constraint, Type)
1718import Data.Typeable (Proxy (.. ))
1819import qualified Data.Vector as V
1920import Database.LSMTree as Types (LookupResult (.. ), QueryResult (.. ),
20- ResolveValue , Update (.. ))
21+ ResolveAsFirst (.. ), ResolveValue (.. ), Update (.. ),
22+ resolveDeserialised )
2123import qualified Database.LSMTree as R
2224import Database.LSMTree.Class.Common as Common
2325
@@ -47,9 +49,6 @@ class (IsSession (Session h)) => IsTable h where
4749
4850 lookups ::
4951 ( IOLike m
50- , SerialiseKey k
51- , SerialiseValue v
52- , ResolveValue v
5352 , C k v b
5453 )
5554 => h m k v b
@@ -58,9 +57,6 @@ class (IsSession (Session h)) => IsTable h where
5857
5958 rangeLookup ::
6059 ( IOLike m
61- , SerialiseKey k
62- , SerialiseValue v
63- , ResolveValue v
6460 , C k v b
6561 )
6662 => h m k v b
@@ -69,7 +65,6 @@ class (IsSession (Session h)) => IsTable h where
6965
7066 newCursor ::
7167 ( IOLike m
72- , SerialiseKey k
7368 , C k v b
7469 )
7570 => Maybe k
@@ -86,9 +81,6 @@ class (IsSession (Session h)) => IsTable h where
8681
8782 readCursor ::
8883 ( IOLike m
89- , SerialiseKey k
90- , SerialiseValue v
91- , ResolveValue v
9284 , C k v b
9385 )
9486 => proxy h
@@ -98,8 +90,7 @@ class (IsSession (Session h)) => IsTable h where
9890
9991 retrieveBlobs ::
10092 ( IOLike m
101- , SerialiseValue b
102- , C_ b
93+ , CB b
10394 )
10495 => proxy h
10596 -> Session h m
@@ -108,10 +99,6 @@ class (IsSession (Session h)) => IsTable h where
10899
109100 updates ::
110101 ( IOLike m
111- , SerialiseKey k
112- , SerialiseValue v
113- , SerialiseValue b
114- , ResolveValue v
115102 , C k v b
116103 )
117104 => h m k v b
@@ -120,10 +107,6 @@ class (IsSession (Session h)) => IsTable h where
120107
121108 inserts ::
122109 ( IOLike m
123- , SerialiseKey k
124- , SerialiseValue v
125- , SerialiseValue b
126- , ResolveValue v
127110 , C k v b
128111 )
129112 => h m k v b
@@ -132,10 +115,6 @@ class (IsSession (Session h)) => IsTable h where
132115
133116 deletes ::
134117 ( IOLike m
135- , SerialiseKey k
136- , SerialiseValue v
137- , SerialiseValue b
138- , ResolveValue v
139118 , C k v b
140119 )
141120 => h m k v b
@@ -144,10 +123,6 @@ class (IsSession (Session h)) => IsTable h where
144123
145124 mupserts ::
146125 ( IOLike m
147- , SerialiseKey k
148- , SerialiseValue v
149- , SerialiseValue b
150- , ResolveValue v
151126 , C k v b
152127 )
153128 => h m k v b
@@ -156,10 +131,6 @@ class (IsSession (Session h)) => IsTable h where
156131
157132 createSnapshot ::
158133 ( IOLike m
159- , SerialiseKey k
160- , SerialiseValue v
161- , SerialiseValue b
162- , ResolveValue v
163134 , C k v b
164135 )
165136 => SnapshotLabel
@@ -169,10 +140,6 @@ class (IsSession (Session h)) => IsTable h where
169140
170141 openSnapshot ::
171142 ( IOLike m
172- , SerialiseKey k
173- , SerialiseValue v
174- , ResolveValue v
175- , SerialiseValue b
176143 , C k v b
177144 )
178145 => Session h m
@@ -189,30 +156,22 @@ class (IsSession (Session h)) => IsTable h where
189156
190157 union ::
191158 ( IOLike m
192- , ResolveValue v
193- , SerialiseValue v
194159 , C k v b
195160 )
196161 => h m k v b
197162 -> h m k v b
198163 -> m (h m k v b )
199164
200165withTableNew :: forall h m k v b a .
201- ( IOLike m
202- , IsTable h
203- , C k v b
204- )
166+ (IOLike m , IsTable h , C k v b )
205167 => Session h m
206168 -> TableConfig h
207169 -> (h m k v b -> m a )
208170 -> m a
209171withTableNew sesh conf = bracket (new sesh conf) close
210172
211173withTableFromSnapshot :: forall h m k v b a .
212- ( IOLike m , IsTable h
213- , SerialiseKey k , SerialiseValue v , SerialiseValue b , ResolveValue v
214- , C k v b
215- )
174+ (IOLike m , IsTable h , C k v b )
216175 => Session h m
217176 -> SnapshotLabel
218177 -> SnapshotName
@@ -221,21 +180,22 @@ withTableFromSnapshot :: forall h m k v b a.
221180withTableFromSnapshot sesh label snap = bracket (openSnapshot sesh label snap) close
222181
223182withTableDuplicate :: forall h m k v b a .
224- ( IOLike m
225- , IsTable h
226- , C k v b
227- )
183+ (IOLike m , IsTable h , C k v b )
228184 => h m k v b
229185 -> (h m k v b -> m a )
230186 -> m a
231187withTableDuplicate table = bracket (duplicate table) close
232188
189+ withTableUnion :: forall h m k v b a .
190+ (IOLike m , IsTable h , C k v b )
191+ => h m k v b
192+ -> h m k v b
193+ -> (h m k v b -> m a )
194+ -> m a
195+ withTableUnion table1 table2 = bracket (table1 `union` table2) close
196+
233197withCursor :: forall h m k v b a .
234- ( IOLike m
235- , IsTable h
236- , SerialiseKey k
237- , C k v b
238- )
198+ (IOLike m , IsTable h , C k v b )
239199 => Maybe k
240200 -> h m k v b
241201 -> (Cursor h m k v b -> m a )
0 commit comments