{-# LANGUAGE RecordWildCards #-} module Database.RocksDB.WriteOptions ( WriteOptions(..) , defaultWriteOptions , marshalWriteOptions ) where import Database.RocksDB.Internals import Database.RocksDB.Utils import Foreign hiding (newForeignPtr) import Foreign.Concurrent data WriteOptions = WriteOptions { sync :: !(Maybe Bool) , disableWAL :: !(Maybe Int) } defaultWriteOptions :: WriteOptions {-# INLINEABLE defaultWriteOptions #-} defaultWriteOptions = WriteOptions {sync = Nothing, disableWAL = Nothing} marshalWriteOptions :: WriteOptions -> IO (ForeignPtr RocksdbWriteoptions) {-# INLINEABLE marshalWriteOptions #-} marshalWriteOptions WriteOptions {..} = do wopts_p <- c_rocksdb_writeoptions_create setBoolOptions sync $ c_rocksdb_writeoptions_set_sync wopts_p setIntOptions disableWAL $ c_rocksdb_writeoptions_disable_WAL wopts_p newForeignPtr wopts_p $ c_rocksdb_writeoptions_destroy wopts_p