{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE EmptyDataDecls #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE GADTs #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE TypeOperators #-} module Zenith.DB where import Control.Monad.IO.Class (liftIO) import qualified Data.ByteString as BS import qualified Data.Text as T import Database.Persist import Database.Persist.Sqlite import Database.Persist.TH import ZcashHaskell.Types (Phrase, ZcashNet) derivePersistField "ZcashNet" share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase| ZcashWallet seedPhrase Phrase birthdayHeight Int name T.Text network ZcashNet deriving Show ZcashAccount walletId ZcashWalletId index Int orchSpendKey BS.ByteString sapSpendKey BS.ByteString tPrivateKey BS.ByteString deriving Show WalletAddress accId ZcashAccountId index Int orchRec BS.ByteString Maybe sapRec BS.ByteString Maybe tRec BS.ByteString Maybe encoded T.Text deriving Show |] getWallets :: T.Text -> ZcashNet -> IO [Entity ZcashWallet] getWallets dbFp n = runSqlite dbFp $ do s <- selectList [ZcashWalletNetwork ==. n] [] liftIO $ return s