packages feed

direct-rocksdb-0.0.2: test/direct-rocksdb-test.hs

{-# LANGUAGE OverloadedStrings #-}

import Control.Exception.Safe
import Database.RocksDB.DB
import Database.RocksDB.Options
import Database.RocksDB.ReadOptions
import Database.RocksDB.WriteOptions
import Foreign
import System.Directory
import System.FilePath

main :: IO ()
main = do
  tmp_dir <- getTemporaryDirectory
  let opts = defaultOptions {createIfMissing = Just True}
      db_path = tmp_dir </> "direct-rocksdb-test.rocksdb"
  bracket (openDB opts db_path) finalizeForeignPtr $ \db_fptr ->
    bracket (marshalWriteOptions defaultWriteOptions) finalizeForeignPtr $ \wopts_fptr -> do
      putDB db_fptr wopts_fptr "key" "value"
      bracket (marshalReadOptions defaultReadOptions) finalizeForeignPtr $ \ropts_fptr -> do
        v <- getDB db_fptr ropts_fptr "key"
        print v
        assert (v == "value") $ pure ()