@@ -30,9 +30,7 @@ module Database.LSMTree.Internal.Paths (
30
30
, toChecksumsFile
31
31
, fromChecksumsFile
32
32
-- * Checksums for WriteBuffer files
33
- , checksumFileNamesForWriteBufferFiles
34
33
, toChecksumsFileForWriteBufferFiles
35
- , fromChecksumsFileForWriteBufferFiles
36
34
-- * ForRunFiles abstraction
37
35
, ForKOps (.. )
38
36
, ForBlob (.. )
@@ -45,22 +43,18 @@ module Database.LSMTree.Internal.Paths (
45
43
, forRunIndexRaw
46
44
-- * WriteBuffer paths
47
45
, WriteBufferFsPaths (WrapRunFsPaths , WriteBufferFsPaths , writeBufferDir , writeBufferNumber )
48
- , pathsForWriteBufferFiles
49
46
, writeBufferKOpsPath
50
47
, writeBufferBlobPath
51
48
, writeBufferChecksumsPath
52
49
, writeBufferFilePathWithExt
53
- -- * ForWriteBufferFiles abstraction
54
- , ForWriteBufferFiles (.. )
55
- , forWriteBufferKOpsRaw
56
- , forWriteBufferBlobRaw
57
- , writeBufferFileExts
58
50
) where
59
51
60
52
import Control.Applicative (Applicative (.. ))
61
53
import Control.DeepSeq (NFData (.. ))
54
+ import Data.Bifunctor (Bifunctor (.. ))
62
55
import qualified Data.ByteString.Char8 as BS
63
56
import Data.Foldable (toList )
57
+ import Data.Function ((&) )
64
58
import qualified Data.Map as Map
65
59
import Data.Maybe (fromMaybe )
66
60
import Data.String (IsString (.. ))
@@ -228,7 +222,7 @@ runFileExts = ForRunFiles {
228
222
}
229
223
230
224
{- ------------------------------------------------------------------------------
231
- Checksums
225
+ Checksums For Run Files
232
226
-------------------------------------------------------------------------------}
233
227
234
228
checksumFileNamesForRunFiles :: ForRunFiles CRC. ChecksumsFileName
@@ -243,18 +237,6 @@ fromChecksumsFile file = for checksumFileNamesForRunFiles $ \name ->
243
237
Just crc -> Right crc
244
238
Nothing -> Left (" key not found: " <> show name)
245
239
246
- checksumFileNamesForWriteBufferFiles :: ForWriteBufferFiles CRC. ChecksumsFileName
247
- checksumFileNamesForWriteBufferFiles = fmap (CRC. ChecksumsFileName . BS. pack) writeBufferFileExts
248
-
249
- toChecksumsFileForWriteBufferFiles :: ForWriteBufferFiles CRC. CRC32C -> CRC. ChecksumsFile
250
- toChecksumsFileForWriteBufferFiles = Map. fromList . toList . liftA2 (,) checksumFileNamesForWriteBufferFiles
251
-
252
- fromChecksumsFileForWriteBufferFiles :: CRC. ChecksumsFile -> Either String (ForWriteBufferFiles CRC. CRC32C )
253
- fromChecksumsFileForWriteBufferFiles file = for checksumFileNamesForWriteBufferFiles $ \ name ->
254
- case Map. lookup name file of
255
- Just crc -> Right crc
256
- Nothing -> Left (" key not found: " <> show name)
257
-
258
240
{- ------------------------------------------------------------------------------
259
241
Marker newtypes for individual elements of the ForRunFiles and the
260
242
ForWriteBufferFiles abstractions
@@ -314,15 +296,17 @@ pattern WriteBufferFsPaths {writeBufferDir, writeBufferNumber} = WrapRunFsPaths
314
296
315
297
{-# COMPLETE WriteBufferFsPaths #-}
316
298
317
- -- | Paths to all files associated with this run, except 'runChecksumsPath'.
318
- pathsForWriteBufferFiles :: WriteBufferFsPaths -> ForWriteBufferFiles FsPath
319
- pathsForWriteBufferFiles fsPaths = fmap (writeBufferFilePathWithExt fsPaths) writeBufferFileExts
299
+ writeBufferKOpsExt :: String
300
+ writeBufferKOpsExt = unForKOps . forRunKOps $ runFileExts
301
+
302
+ writeBufferBlobExt :: String
303
+ writeBufferBlobExt = unForBlob . forRunBlob $ runFileExts
320
304
321
305
writeBufferKOpsPath :: WriteBufferFsPaths -> FsPath
322
- writeBufferKOpsPath = unForKOps . forWriteBufferKOps . pathsForWriteBufferFiles
306
+ writeBufferKOpsPath = flip writeBufferFilePathWithExt writeBufferKOpsExt
323
307
324
308
writeBufferBlobPath :: WriteBufferFsPaths -> FsPath
325
- writeBufferBlobPath = unForBlob . forWriteBufferBlob . pathsForWriteBufferFiles
309
+ writeBufferBlobPath = flip writeBufferFilePathWithExt writeBufferBlobExt
326
310
327
311
writeBufferChecksumsPath :: WriteBufferFsPaths -> FsPath
328
312
writeBufferChecksumsPath = flip writeBufferFilePathWithExt " checksums"
@@ -331,28 +315,16 @@ writeBufferFilePathWithExt :: WriteBufferFsPaths -> String -> FsPath
331
315
writeBufferFilePathWithExt (WriteBufferFsPaths dir n) ext =
332
316
dir </> mkFsPath [show n] <.> ext
333
317
334
- writeBufferFileExts :: ForWriteBufferFiles String
335
- writeBufferFileExts = ForWriteBufferFiles
336
- { forWriteBufferKOps = forRunKOps runFileExts
337
- , forWriteBufferBlob = forRunBlob runFileExts
338
- }
339
318
340
319
{- ------------------------------------------------------------------------------
341
- ForWriteBuffer abstraction
320
+ Checksums For Run Files
342
321
-------------------------------------------------------------------------------}
343
322
344
- -- | Stores someting for each run file (except the checksums file), allowing to
345
- -- easily do something for all of them without mixing them up.
346
- data ForWriteBufferFiles a = ForWriteBufferFiles { forWriteBufferKOps :: ! (ForKOps a ), forWriteBufferBlob :: ! (ForBlob a ) }
347
- deriving stock (Show , Foldable , Functor , Traversable )
348
-
349
- forWriteBufferKOpsRaw :: ForWriteBufferFiles a -> a
350
- forWriteBufferKOpsRaw = unForKOps . forWriteBufferKOps
351
-
352
- forWriteBufferBlobRaw :: ForWriteBufferFiles a -> a
353
- forWriteBufferBlobRaw = unForBlob . forWriteBufferBlob
354
-
355
- instance Applicative ForWriteBufferFiles where
356
- pure x = ForWriteBufferFiles (ForKOps x) (ForBlob x)
357
- ForWriteBufferFiles (ForKOps f1) (ForBlob f2) <*> ForWriteBufferFiles (ForKOps x1) (ForBlob x2) =
358
- ForWriteBufferFiles (ForKOps $ f1 x1) (ForBlob $ f2 x2)
323
+ toChecksumsFileForWriteBufferFiles :: (ForKOps CRC. CRC32C , ForBlob CRC. CRC32C ) -> CRC. ChecksumsFile
324
+ toChecksumsFileForWriteBufferFiles checksums =
325
+ Map. fromList . toList $ checksums & bimap
326
+ ((toChecksumsFileName writeBufferKOpsExt,) . unForKOps)
327
+ ((toChecksumsFileName writeBufferBlobExt,) . unForBlob)
328
+ where
329
+ toChecksumsFileName :: String -> CRC. ChecksumsFileName
330
+ toChecksumsFileName = CRC. ChecksumsFileName . BS. pack
0 commit comments