Skip to content

Commit 48697e1

Browse files
committed
remote: add maybePathMetadata serializer
1 parent d18a014 commit 48697e1

File tree

3 files changed

+29
-3
lines changed

3 files changed

+29
-3
lines changed

hnix-store-remote/src/System/Nix/Store/Remote/Serializer.hs

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ module System.Nix.Store.Remote.Serializer
9494
, gcResult
9595
-- *** Missing
9696
, missing
97+
-- *** Maybe (Metadata StorePath)
98+
, maybePathMetadata
9799
) where
98100

99101
import Control.Monad.Except (MonadError, throwError, )
@@ -562,9 +564,11 @@ pathMetadata = Serializer
562564

563565
metadataReferences <- getS $ hashSet storePath
564566
metadataRegistrationTime <- getS time
565-
metadataNarBytes <- (\case
566-
0 -> Nothing
567-
size -> Just size) <$> getS int
567+
metadataNarBytes <-
568+
(\case
569+
0 -> Nothing
570+
size -> Just size
571+
) <$> getS int
568572
metadataTrust <- getS storePathTrust
569573

570574
metadataSigs <- getS $ set narSignature
@@ -1343,6 +1347,7 @@ data ReplySError
13431347
| ReplySError_PrimPut SError
13441348
| ReplySError_DerivationOutput SError
13451349
| ReplySError_GCResult SError
1350+
| ReplySError_Metadata SError
13461351
| ReplySError_Missing SError
13471352
| ReplySError_Realisation SError
13481353
| ReplySError_RealisationWithId SError
@@ -1476,3 +1481,19 @@ missing = mapErrorS ReplySError_Missing $ Serializer
14761481
putS int missingDownloadSize
14771482
putS int missingNarSize
14781483
}
1484+
1485+
-- *** Maybe (Metadata StorePath)
1486+
1487+
maybePathMetadata
1488+
:: HasStoreDir r
1489+
=> NixSerializer r ReplySError (Maybe (Metadata StorePath))
1490+
maybePathMetadata = mapErrorS ReplySError_Metadata $ Serializer
1491+
{ getS = do
1492+
valid <- getS bool
1493+
if valid
1494+
then pure <$> getS pathMetadata
1495+
else pure Nothing
1496+
, putS = \case
1497+
Nothing -> putS bool False
1498+
Just pm -> putS bool True >> putS pathMetadata pm
1499+
}

hnix-store-remote/src/System/Nix/Store/Remote/Types/StoreReply.hs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ module System.Nix.Store.Remote.Types.StoreReply
44

55
import System.Nix.Build (BuildResult)
66
import System.Nix.StorePath (HasStoreDir(..), StorePath)
7+
import System.Nix.StorePath.Metadata (Metadata)
78
import System.Nix.Store.Remote.Serializer
89
import System.Nix.Store.Remote.Types.GC (GCResult)
910
import System.Nix.Store.Remote.Types.Query.Missing (Missing)
@@ -33,6 +34,9 @@ instance StoreReply GCResult where
3334
instance StoreReply Missing where
3435
getReplyS = missing
3536

37+
instance StoreReply (Maybe (Metadata StorePath)) where
38+
getReplyS = maybePathMetadata
39+
3640
instance StoreReply StorePath where
3741
getReplyS = mapPrimE storePath
3842

hnix-store-remote/tests/NixSerializerSpec.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ spec = parallel $ do
152152
describe "StoreReply" $ do
153153
prop "GCResult" $ roundtripSReader @StoreDir gcResult
154154
prop "Missing" $ roundtripSReader @StoreDir missing
155+
prop "Maybe (Metadata StorePath)" $ roundtripSReader @StoreDir maybePathMetadata
155156

156157
restrictProtoVersion :: ProtoVersion -> Some StoreRequest -> Bool
157158
restrictProtoVersion v (Some (BuildPaths _ _)) | v < ProtoVersion 1 30 = False

0 commit comments

Comments
 (0)