diff --git a/src/Zenith/DB.hs b/src/Zenith/DB.hs index 26cf8d5..50d64f8 100644 --- a/src/Zenith/DB.hs +++ b/src/Zenith/DB.hs @@ -249,7 +249,7 @@ share AddressBook network ZcashNetDB descrip T.Text - address HexStringDB + address T.Text UniqueABA address deriving Show Eq |] @@ -1484,5 +1484,24 @@ getAdrBook pool n = where_ (adrbook ^. AddressBookNetwork ==. val (ZcashNetDB n)) pure adrbook +-- | Save a new address into AddressBook +saveAdrsInAdrBook :: + ConnectionPool -- ^ The database path to use + -> AddressBook -- ^ The address to add to the database + -> IO (Maybe (Entity AddressBook)) +saveAdrsInAdrBook pool a = + runNoLoggingT $ + PS.retryOnBusy $ flip PS.runSqlPool pool $ insertUniqueEntity a + +-- | Update an existing address into AddressBook +updateAdrsInAdrBook :: ConnectionPool -> T.Text -> AddressBookId -> IO () +updateAdrsInAdrBook pool a i = do + runNoLoggingT $ + PS.retryOnBusy $ + flip PS.runSqlPool pool $ do + update $ \ab -> do + set ab [AddressBookAddress =. val a] + where_ $ ab ^. AddressBookId ==. val i + rmdups :: Ord a => [a] -> [a] rmdups = map head . group . sort