make function processing sql rows module-level (#533)

This commit is contained in:
Evgeny Poberezkin authored and GitHub committed 2022-09-22 12:12:24 +01:00
1 parent 41d3c14157
commit f8505d4add
1 file changed
+6 -4
+6 -4
View File
@@ -245,12 +245,14 @@ sqlString s = quote <> T.replace quote "''" (T.pack s) <> quote
exexSQL :: DB.Connection -> Text -> IO [Text]
exexSQL db query = do
rs <- newIORef []
SQLite3.execWithCallback (DB.connectionHandle db) query (addRow rs)
SQLite3.execWithCallback (DB.connectionHandle db) query (addSQLResultRow rs)
reverse <$> readIORef rs
addSQLResultRow :: IORef [Text] -> SQLite3.ColumnIndex -> [Text] -> [Maybe Text] -> IO ()
addSQLResultRow rs _count names values = modifyIORef' rs $ \case
[] -> [showValues values, T.intercalate "|" names]
rs' -> showValues values : rs'
where
addRow rs _count names values = modifyIORef' rs $ \case
[] -> [showValues values, T.intercalate "|" names]
rs' -> showValues values : rs'
showValues = T.intercalate "|" . map (fromMaybe "")
checkConstraint :: StoreError -> IO (Either StoreError a) -> IO (Either StoreError a)