{-# 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 spendingKey BS.ByteString tPrivateKey BS.ByteString birthdayHeight Int name T.Text network ZcashNet deriving Show |] getWallets :: ZcashNet -> IO [Entity ZcashWallet] getWallets n = runSqlite "zenith.db" $ do s <- selectList [ZcashWalletNetwork ==. n] [] liftIO $ return s