@@ -24,10 +24,14 @@ module Database.LSMTree.Model.Normal.Session (
2424 Model (.. )
2525 , initModel
2626 , UpdateCounter (.. )
27- -- ** SomeTable
27+ -- ** SomeTable, for testing
2828 , SomeTable (.. )
2929 , toSomeTable
3030 , fromSomeTable
31+ , withSomeTable
32+ , TableHandleID
33+ , tableHandleID
34+ , Model. size
3135 -- ** Constraints
3236 , C
3337 , C_
@@ -118,7 +122,9 @@ newtype UpdateCounter = UpdateCounter Word64
118122 deriving stock (Show , Eq , Ord )
119123 deriving newtype (Num )
120124
121- newtype SomeTable = SomeTable Dynamic
125+ data SomeTable where
126+ SomeTable :: (Typeable k , Typeable v , Typeable blob )
127+ => Model. Table k v blob -> SomeTable
122128
123129instance Show SomeTable where
124130 show (SomeTable table) = show table
@@ -127,13 +133,20 @@ toSomeTable ::
127133 (Typeable k , Typeable v , Typeable blob )
128134 => Model. Table k v blob
129135 -> SomeTable
130- toSomeTable = SomeTable . toDyn
136+ toSomeTable = SomeTable
131137
132138fromSomeTable ::
133139 (Typeable k , Typeable v , Typeable blob )
134140 => SomeTable
135141 -> Maybe (Model. Table k v blob )
136- fromSomeTable (SomeTable tbl) = fromDynamic tbl
142+ fromSomeTable (SomeTable tbl) = cast tbl
143+
144+ withSomeTable ::
145+ (forall k v blob . (Typeable k , Typeable v , Typeable blob )
146+ => Model. Table k v blob -> a )
147+ -> SomeTable
148+ -> a
149+ withSomeTable f (SomeTable tbl) = f tbl
137150
138151newtype SomeCursor = SomeCursor Dynamic
139152
0 commit comments