package com.sunrisechoir.rnpatchql class Patchql { var patchqlPointer: Long = 0 init { System.loadLibrary("rust_native_patchql") this.initLibrary() } fun new(offsetLogPath: String, databasePath: String, publicKey: String, privateKey: String){ if (patchqlPointer > 0) { this.patchqlDestroy(patchqlPointer) } patchqlPointer = this.patchqlNew(offsetLogPath = offsetLogPath, databasePath = databasePath, publicKey = publicKey, privateKey = privateKey) } fun query(query: String, callback: (Result) -> Unit) { this.patchqlQueryAsync(patchqlPointer, query, callback) } protected fun finalize(){ if (patchqlPointer > 0) { this.patchqlDestroy(patchqlPointer) } } private external fun patchqlNew(offsetLogPath: String, databasePath: String, publicKey: String, privateKey: String ): Long private external fun patchqlDestroy(contextPointer: Long ) private external fun patchqlQueryAsync(contextPointer: Long, query: String, callback: (Result) -> Unit ) private external fun initLibrary() }