Skip to content

Commit

Permalink
add SharedWallet to Sqlite.TH
Browse files Browse the repository at this point in the history
  • Loading branch information
paweljakubas committed Apr 8, 2021
1 parent 1dcdf51 commit 6dec62f
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 4 deletions.
2 changes: 1 addition & 1 deletion lib/core/src/Cardano/Wallet/Api/Types.hs
Expand Up @@ -1084,7 +1084,7 @@ data ApiPendingSharedWallet = ApiPendingSharedWallet
} deriving (Eq, Generic, Show)
deriving anyclass NFData

data ApiSharedWallet = ApiSharedWallet
newtype ApiSharedWallet = ApiSharedWallet
{ wallet :: Either ApiPendingSharedWallet ApiActiveSharedWallet
} deriving (Eq, Generic, Show)
deriving anyclass NFData
Expand Down
19 changes: 19 additions & 0 deletions lib/core/src/Cardano/Wallet/DB/Sqlite/TH.hs
Expand Up @@ -27,6 +27,8 @@ module Cardano.Wallet.DB.Sqlite.TH where

import Prelude

import Cardano.Address.Script
( Cosigner, Script )
import Cardano.Slotting.Slot
( SlotNo )
import Cardano.Wallet.DB.Sqlite.Types
Expand Down Expand Up @@ -373,4 +375,21 @@ RndStatePendingAddress
rndStatePendingAddressAddress
Foreign Wallet OnDeleteCascade rnd_state_pending_address rndStatePendingAddressWalletId
deriving Show Generic

-- Shared Wallet
SharedWallet
sharedWalletWalletId W.WalletId sql=wallet_id
sharedWalletCreationTime UTCTime sql=creation_time
sharedWalletUpdateTime UTCTime Maybe sql=update_time
sharedWalletName Text sql=name
sharedWalletAccountXPub B8.ByteString sql=account_xpub
sharedWalletAccountIndex Word32 sql=account_ix
sharedWalletScriptGap W.AddressPoolGap sql=pool_gap
sharedWalletPaymentScript (Script Cosigner) sql=payment_script
sharedWalletDelegationScript (Script Cosigner) Maybe sql=delegation_script
sharedWalletGenesisHash BlockId sql=genesis_hash
sharedWalletGenesisStart UTCTime sql=genesis_start

Primary sharedWalletWalletId
deriving Show Generic
|]
19 changes: 18 additions & 1 deletion lib/core/src/Cardano/Wallet/DB/Sqlite/Types.hs
Expand Up @@ -23,7 +23,7 @@ module Cardano.Wallet.DB.Sqlite.Types where
import Prelude

import Cardano.Address.Script
( KeyHash (..), ScriptHash (..) )
( Cosigner, KeyHash (..), Script, ScriptHash (..) )
import Cardano.Api.Typed
( TxMetadataJsonSchema (..)
, displayError
Expand Down Expand Up @@ -501,6 +501,23 @@ instance PersistField KeyHash where
instance PersistFieldSql KeyHash where
sqlType _ = sqlType (Proxy @Text)

----------------------------------------------------------------------------
-- Script Cosigner

instance PersistField (Script Cosigner) where
toPersistValue =
toPersistValue .
decodeUtf8 .
BL.toStrict .
Aeson.encode .
toJSON
fromPersistValue =
(left T.pack . Aeson.eitherDecode . BL.fromStrict . encodeUtf8) <=<
fromPersistValue

instance PersistFieldSql (Script Cosigner) where
sqlType _ = sqlType (Proxy @Text)

----------------------------------------------------------------------------
-- AddressPoolGap

Expand Down
4 changes: 2 additions & 2 deletions lib/core/test/unit/Cardano/Wallet/Api/TypesSpec.hs
Expand Up @@ -1119,9 +1119,9 @@ instance Arbitrary (Script Cosigner) where

instance Arbitrary ScriptTemplate where
arbitrary = do
script <- arbitrary `suchThat` (\s -> length (retrieveAllCosigners s) > 0)
script <- arbitrary `suchThat` (\s -> not (null (retrieveAllCosigners s)))
let scriptCosigners = retrieveAllCosigners script
cosignersSubset <- sublistOf scriptCosigners `suchThat` (\cs -> length cs > 0)
cosignersSubset <- sublistOf scriptCosigners `suchThat` (\cs -> not (null cs))
let xpubGen = fromJust . xpubFromBytes . BS.pack <$> vectorOf 64 arbitrary
xpubs <- vectorOf (length cosignersSubset) xpubGen
pure $ ScriptTemplate (Map.fromList $ zip cosignersSubset xpubs) script
Expand Down

0 comments on commit 6dec62f

Please sign in to comment.