From 00a4cac055dc43b157ce7354c8f09398913e7d2a Mon Sep 17 00:00:00 2001 From: Dmitry Zuikov Date: Sun, 17 Mar 2024 04:45:07 +0300 Subject: [PATCH] wip, auto increment seqno for lwwref in cli --- hbs2-peer/app/CLI/LWWRef.hs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/hbs2-peer/app/CLI/LWWRef.hs b/hbs2-peer/app/CLI/LWWRef.hs index 3ab65655..ab97e95b 100644 --- a/hbs2-peer/app/CLI/LWWRef.hs +++ b/hbs2-peer/app/CLI/LWWRef.hs @@ -51,12 +51,24 @@ pLwwRefUpdate :: Parser (IO ()) pLwwRefUpdate = do rpc <- pRpcCommon puk <- argument pPubKey (metavar "LWWREF") - seq <- option @Word64 auto (short 's' <> long "seq" <> help "seqno" <>metavar "SEQ") + seq' <- optional $ option @Word64 auto (short 's' <> long "seq" <> help "seqno" <>metavar "SEQ") val <- option (maybeReader fromStringMay) (short 'v' <> long "value" <> help "value" <> metavar "VALUE") pure $ withMyRPC @LWWRefAPI rpc $ \caller -> do + + (sk,pk) <- liftIO $ runKeymanClient do creds <- loadCredentials puk >>= orThrowUser "can't load credentials" pure ( view peerSignSk creds, view peerSignPk creds ) + + seq <- case seq' of + Just v -> pure v + Nothing -> do + let ref = LWWRefKey puk + callService @RpcLWWRefGet caller ref >>= \case + Left e -> err (viaShow e) >> exitFailure + Right Nothing -> err ("not found value for" <+> pretty ref) >> exitFailure + Right (Just r) -> pure $ succ (lwwSeq r) + let box = makeSignedBox @L4Proto pk sk (LWWRef @L4Proto seq val Nothing) callService @RpcLWWRefUpdate caller box >>= \case Left e -> err (viaShow e) >> exitFailure