feat: integrate native indexer for mobile (#14174)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
## Release Notes
* **New Features**
* Added full-text search functionality to mobile apps (Android and iOS),
enabling document indexing and search capabilities.
* Enhanced blob upload support with new GraphQL mutations for creating,
completing, and managing file uploads.
* **Improvements**
* iOS and Android now use SQLite storage backend for improved indexing
performance, aligning with desktop experience.
<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
@@ -618,4 +618,121 @@ class NbStorePlugin : Plugin() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PluginMethod
|
||||||
|
fun ftsAddDocument(call: PluginCall) {
|
||||||
|
launch(Dispatchers.IO) {
|
||||||
|
try {
|
||||||
|
val id = call.getStringEnsure("id")
|
||||||
|
val indexName = call.getStringEnsure("indexName")
|
||||||
|
val docId = call.getStringEnsure("docId")
|
||||||
|
val text = call.getStringEnsure("text")
|
||||||
|
val index = call.getBoolean("index")
|
||||||
|
?: throw IllegalArgumentException("index is required")
|
||||||
|
docStoragePool.ftsAddDocument(id, indexName, docId, text, index)
|
||||||
|
call.resolve()
|
||||||
|
} catch (e: Exception) {
|
||||||
|
call.reject("Failed to add document to fts: ${e.message}", null, e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@PluginMethod
|
||||||
|
fun ftsDeleteDocument(call: PluginCall) {
|
||||||
|
launch(Dispatchers.IO) {
|
||||||
|
try {
|
||||||
|
val id = call.getStringEnsure("id")
|
||||||
|
val indexName = call.getStringEnsure("indexName")
|
||||||
|
val docId = call.getStringEnsure("docId")
|
||||||
|
docStoragePool.ftsDeleteDocument(id, indexName, docId)
|
||||||
|
call.resolve()
|
||||||
|
} catch (e: Exception) {
|
||||||
|
call.reject("Failed to delete document from fts: ${e.message}", null, e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@PluginMethod
|
||||||
|
fun ftsSearch(call: PluginCall) {
|
||||||
|
launch(Dispatchers.IO) {
|
||||||
|
try {
|
||||||
|
val id = call.getStringEnsure("id")
|
||||||
|
val indexName = call.getStringEnsure("indexName")
|
||||||
|
val query = call.getStringEnsure("query")
|
||||||
|
val results = docStoragePool.ftsSearch(id, indexName, query)
|
||||||
|
val mapped = results.map {
|
||||||
|
JSObject()
|
||||||
|
.put("id", it.id)
|
||||||
|
.put("score", it.score)
|
||||||
|
.put("terms", JSArray(it.terms))
|
||||||
|
}
|
||||||
|
call.resolve(
|
||||||
|
JSObject().put("results", JSArray(mapped))
|
||||||
|
)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
call.reject("Failed to search fts: ${e.message}", null, e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@PluginMethod
|
||||||
|
fun ftsGetDocument(call: PluginCall) {
|
||||||
|
launch(Dispatchers.IO) {
|
||||||
|
try {
|
||||||
|
val id = call.getStringEnsure("id")
|
||||||
|
val indexName = call.getStringEnsure("indexName")
|
||||||
|
val docId = call.getStringEnsure("docId")
|
||||||
|
val text = docStoragePool.ftsGetDocument(id, indexName, docId)
|
||||||
|
call.resolve(JSObject().put("text", text))
|
||||||
|
} catch (e: Exception) {
|
||||||
|
call.reject("Failed to get fts document: ${e.message}", null, e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@PluginMethod
|
||||||
|
fun ftsGetMatches(call: PluginCall) {
|
||||||
|
launch(Dispatchers.IO) {
|
||||||
|
try {
|
||||||
|
val id = call.getStringEnsure("id")
|
||||||
|
val indexName = call.getStringEnsure("indexName")
|
||||||
|
val docId = call.getStringEnsure("docId")
|
||||||
|
val query = call.getStringEnsure("query")
|
||||||
|
val matches = docStoragePool.ftsGetMatches(id, indexName, docId, query)
|
||||||
|
val mapped = matches.map {
|
||||||
|
JSObject()
|
||||||
|
.put("start", it.start.toInt())
|
||||||
|
.put("end", it.end.toInt())
|
||||||
|
}
|
||||||
|
call.resolve(JSObject().put("matches", JSArray(mapped)))
|
||||||
|
} catch (e: Exception) {
|
||||||
|
call.reject("Failed to get fts matches: ${e.message}", null, e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@PluginMethod
|
||||||
|
fun ftsFlushIndex(call: PluginCall) {
|
||||||
|
launch(Dispatchers.IO) {
|
||||||
|
try {
|
||||||
|
val id = call.getStringEnsure("id")
|
||||||
|
docStoragePool.ftsFlushIndex(id)
|
||||||
|
call.resolve()
|
||||||
|
} catch (e: Exception) {
|
||||||
|
call.reject("Failed to flush fts index: ${e.message}", null, e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@PluginMethod
|
||||||
|
fun ftsIndexVersion(call: PluginCall) {
|
||||||
|
launch(Dispatchers.IO) {
|
||||||
|
try {
|
||||||
|
val version = docStoragePool.ftsIndexVersion()
|
||||||
|
call.resolve(JSObject().put("indexVersion", version))
|
||||||
|
} catch (e: Exception) {
|
||||||
|
call.reject("Failed to get fts index version: ${e.message}", null, e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -768,6 +768,20 @@ internal interface UniffiForeignFutureCompleteVoid : com.sun.jna.Callback {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -814,6 +828,20 @@ fun uniffi_affine_mobile_native_checksum_method_docstoragepool_delete_doc(
|
|||||||
): Short
|
): Short
|
||||||
fun uniffi_affine_mobile_native_checksum_method_docstoragepool_disconnect(
|
fun uniffi_affine_mobile_native_checksum_method_docstoragepool_disconnect(
|
||||||
): Short
|
): Short
|
||||||
|
fun uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_add_document(
|
||||||
|
): Short
|
||||||
|
fun uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_delete_document(
|
||||||
|
): Short
|
||||||
|
fun uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_flush_index(
|
||||||
|
): Short
|
||||||
|
fun uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_get_document(
|
||||||
|
): Short
|
||||||
|
fun uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_get_matches(
|
||||||
|
): Short
|
||||||
|
fun uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_index_version(
|
||||||
|
): Short
|
||||||
|
fun uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_search(
|
||||||
|
): Short
|
||||||
fun uniffi_affine_mobile_native_checksum_method_docstoragepool_get_blob(
|
fun uniffi_affine_mobile_native_checksum_method_docstoragepool_get_blob(
|
||||||
): Short
|
): Short
|
||||||
fun uniffi_affine_mobile_native_checksum_method_docstoragepool_get_blob_uploaded_at(
|
fun uniffi_affine_mobile_native_checksum_method_docstoragepool_get_blob_uploaded_at(
|
||||||
@@ -925,6 +953,20 @@ fun uniffi_affine_mobile_native_fn_method_docstoragepool_delete_doc(`ptr`: Point
|
|||||||
): Long
|
): Long
|
||||||
fun uniffi_affine_mobile_native_fn_method_docstoragepool_disconnect(`ptr`: Pointer,`universalId`: RustBuffer.ByValue,
|
fun uniffi_affine_mobile_native_fn_method_docstoragepool_disconnect(`ptr`: Pointer,`universalId`: RustBuffer.ByValue,
|
||||||
): Long
|
): Long
|
||||||
|
fun uniffi_affine_mobile_native_fn_method_docstoragepool_fts_add_document(`ptr`: Pointer,`universalId`: RustBuffer.ByValue,`indexName`: RustBuffer.ByValue,`docId`: RustBuffer.ByValue,`text`: RustBuffer.ByValue,`index`: Byte,
|
||||||
|
): Long
|
||||||
|
fun uniffi_affine_mobile_native_fn_method_docstoragepool_fts_delete_document(`ptr`: Pointer,`universalId`: RustBuffer.ByValue,`indexName`: RustBuffer.ByValue,`docId`: RustBuffer.ByValue,
|
||||||
|
): Long
|
||||||
|
fun uniffi_affine_mobile_native_fn_method_docstoragepool_fts_flush_index(`ptr`: Pointer,`universalId`: RustBuffer.ByValue,
|
||||||
|
): Long
|
||||||
|
fun uniffi_affine_mobile_native_fn_method_docstoragepool_fts_get_document(`ptr`: Pointer,`universalId`: RustBuffer.ByValue,`indexName`: RustBuffer.ByValue,`docId`: RustBuffer.ByValue,
|
||||||
|
): Long
|
||||||
|
fun uniffi_affine_mobile_native_fn_method_docstoragepool_fts_get_matches(`ptr`: Pointer,`universalId`: RustBuffer.ByValue,`indexName`: RustBuffer.ByValue,`docId`: RustBuffer.ByValue,`query`: RustBuffer.ByValue,
|
||||||
|
): Long
|
||||||
|
fun uniffi_affine_mobile_native_fn_method_docstoragepool_fts_index_version(`ptr`: Pointer,
|
||||||
|
): Long
|
||||||
|
fun uniffi_affine_mobile_native_fn_method_docstoragepool_fts_search(`ptr`: Pointer,`universalId`: RustBuffer.ByValue,`indexName`: RustBuffer.ByValue,`query`: RustBuffer.ByValue,
|
||||||
|
): Long
|
||||||
fun uniffi_affine_mobile_native_fn_method_docstoragepool_get_blob(`ptr`: Pointer,`universalId`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,
|
fun uniffi_affine_mobile_native_fn_method_docstoragepool_get_blob(`ptr`: Pointer,`universalId`: RustBuffer.ByValue,`key`: RustBuffer.ByValue,
|
||||||
): Long
|
): Long
|
||||||
fun uniffi_affine_mobile_native_fn_method_docstoragepool_get_blob_uploaded_at(`ptr`: Pointer,`universalId`: RustBuffer.ByValue,`peer`: RustBuffer.ByValue,`blobId`: RustBuffer.ByValue,
|
fun uniffi_affine_mobile_native_fn_method_docstoragepool_get_blob_uploaded_at(`ptr`: Pointer,`universalId`: RustBuffer.ByValue,`peer`: RustBuffer.ByValue,`blobId`: RustBuffer.ByValue,
|
||||||
@@ -1125,6 +1167,27 @@ private fun uniffiCheckApiChecksums(lib: IntegrityCheckingUniffiLib) {
|
|||||||
if (lib.uniffi_affine_mobile_native_checksum_method_docstoragepool_disconnect() != 20410.toShort()) {
|
if (lib.uniffi_affine_mobile_native_checksum_method_docstoragepool_disconnect() != 20410.toShort()) {
|
||||||
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
|
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
|
||||||
}
|
}
|
||||||
|
if (lib.uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_add_document() != 37651.toShort()) {
|
||||||
|
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
|
||||||
|
}
|
||||||
|
if (lib.uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_delete_document() != 47292.toShort()) {
|
||||||
|
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
|
||||||
|
}
|
||||||
|
if (lib.uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_flush_index() != 9921.toShort()) {
|
||||||
|
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
|
||||||
|
}
|
||||||
|
if (lib.uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_get_document() != 45953.toShort()) {
|
||||||
|
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
|
||||||
|
}
|
||||||
|
if (lib.uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_get_matches() != 35972.toShort()) {
|
||||||
|
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
|
||||||
|
}
|
||||||
|
if (lib.uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_index_version() != 44498.toShort()) {
|
||||||
|
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
|
||||||
|
}
|
||||||
|
if (lib.uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_search() != 28341.toShort()) {
|
||||||
|
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
|
||||||
|
}
|
||||||
if (lib.uniffi_affine_mobile_native_checksum_method_docstoragepool_get_blob() != 56927.toShort()) {
|
if (lib.uniffi_affine_mobile_native_checksum_method_docstoragepool_get_blob() != 56927.toShort()) {
|
||||||
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
|
throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
|
||||||
}
|
}
|
||||||
@@ -1423,6 +1486,29 @@ public object FfiConverterLong: FfiConverter<Long, Long> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @suppress
|
||||||
|
*/
|
||||||
|
public object FfiConverterDouble: FfiConverter<Double, Double> {
|
||||||
|
override fun lift(value: Double): Double {
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun read(buf: ByteBuffer): Double {
|
||||||
|
return buf.getDouble()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun lower(value: Double): Double {
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun allocationSize(value: Double) = 8UL
|
||||||
|
|
||||||
|
override fun write(value: Double, buf: ByteBuffer) {
|
||||||
|
buf.putDouble(value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @suppress
|
* @suppress
|
||||||
*/
|
*/
|
||||||
@@ -1619,6 +1705,20 @@ public interface DocStoragePoolInterface {
|
|||||||
|
|
||||||
suspend fun `disconnect`(`universalId`: kotlin.String)
|
suspend fun `disconnect`(`universalId`: kotlin.String)
|
||||||
|
|
||||||
|
suspend fun `ftsAddDocument`(`universalId`: kotlin.String, `indexName`: kotlin.String, `docId`: kotlin.String, `text`: kotlin.String, `index`: kotlin.Boolean)
|
||||||
|
|
||||||
|
suspend fun `ftsDeleteDocument`(`universalId`: kotlin.String, `indexName`: kotlin.String, `docId`: kotlin.String)
|
||||||
|
|
||||||
|
suspend fun `ftsFlushIndex`(`universalId`: kotlin.String)
|
||||||
|
|
||||||
|
suspend fun `ftsGetDocument`(`universalId`: kotlin.String, `indexName`: kotlin.String, `docId`: kotlin.String): kotlin.String?
|
||||||
|
|
||||||
|
suspend fun `ftsGetMatches`(`universalId`: kotlin.String, `indexName`: kotlin.String, `docId`: kotlin.String, `query`: kotlin.String): List<MatchRange>
|
||||||
|
|
||||||
|
suspend fun `ftsIndexVersion`(): kotlin.UInt
|
||||||
|
|
||||||
|
suspend fun `ftsSearch`(`universalId`: kotlin.String, `indexName`: kotlin.String, `query`: kotlin.String): List<SearchHit>
|
||||||
|
|
||||||
suspend fun `getBlob`(`universalId`: kotlin.String, `key`: kotlin.String): Blob?
|
suspend fun `getBlob`(`universalId`: kotlin.String, `key`: kotlin.String): Blob?
|
||||||
|
|
||||||
suspend fun `getBlobUploadedAt`(`universalId`: kotlin.String, `peer`: kotlin.String, `blobId`: kotlin.String): kotlin.Long?
|
suspend fun `getBlobUploadedAt`(`universalId`: kotlin.String, `peer`: kotlin.String, `blobId`: kotlin.String): kotlin.Long?
|
||||||
@@ -1885,6 +1985,156 @@ open class DocStoragePool: Disposable, AutoCloseable, DocStoragePoolInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Throws(UniffiException::class)
|
||||||
|
@Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE")
|
||||||
|
override suspend fun `ftsAddDocument`(`universalId`: kotlin.String, `indexName`: kotlin.String, `docId`: kotlin.String, `text`: kotlin.String, `index`: kotlin.Boolean) {
|
||||||
|
return uniffiRustCallAsync(
|
||||||
|
callWithPointer { thisPtr ->
|
||||||
|
UniffiLib.INSTANCE.uniffi_affine_mobile_native_fn_method_docstoragepool_fts_add_document(
|
||||||
|
thisPtr,
|
||||||
|
FfiConverterString.lower(`universalId`),FfiConverterString.lower(`indexName`),FfiConverterString.lower(`docId`),FfiConverterString.lower(`text`),FfiConverterBoolean.lower(`index`),
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{ future, callback, continuation -> UniffiLib.INSTANCE.ffi_affine_mobile_native_rust_future_poll_void(future, callback, continuation) },
|
||||||
|
{ future, continuation -> UniffiLib.INSTANCE.ffi_affine_mobile_native_rust_future_complete_void(future, continuation) },
|
||||||
|
{ future -> UniffiLib.INSTANCE.ffi_affine_mobile_native_rust_future_free_void(future) },
|
||||||
|
// lift function
|
||||||
|
{ Unit },
|
||||||
|
|
||||||
|
// Error FFI converter
|
||||||
|
UniffiException.ErrorHandler,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Throws(UniffiException::class)
|
||||||
|
@Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE")
|
||||||
|
override suspend fun `ftsDeleteDocument`(`universalId`: kotlin.String, `indexName`: kotlin.String, `docId`: kotlin.String) {
|
||||||
|
return uniffiRustCallAsync(
|
||||||
|
callWithPointer { thisPtr ->
|
||||||
|
UniffiLib.INSTANCE.uniffi_affine_mobile_native_fn_method_docstoragepool_fts_delete_document(
|
||||||
|
thisPtr,
|
||||||
|
FfiConverterString.lower(`universalId`),FfiConverterString.lower(`indexName`),FfiConverterString.lower(`docId`),
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{ future, callback, continuation -> UniffiLib.INSTANCE.ffi_affine_mobile_native_rust_future_poll_void(future, callback, continuation) },
|
||||||
|
{ future, continuation -> UniffiLib.INSTANCE.ffi_affine_mobile_native_rust_future_complete_void(future, continuation) },
|
||||||
|
{ future -> UniffiLib.INSTANCE.ffi_affine_mobile_native_rust_future_free_void(future) },
|
||||||
|
// lift function
|
||||||
|
{ Unit },
|
||||||
|
|
||||||
|
// Error FFI converter
|
||||||
|
UniffiException.ErrorHandler,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Throws(UniffiException::class)
|
||||||
|
@Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE")
|
||||||
|
override suspend fun `ftsFlushIndex`(`universalId`: kotlin.String) {
|
||||||
|
return uniffiRustCallAsync(
|
||||||
|
callWithPointer { thisPtr ->
|
||||||
|
UniffiLib.INSTANCE.uniffi_affine_mobile_native_fn_method_docstoragepool_fts_flush_index(
|
||||||
|
thisPtr,
|
||||||
|
FfiConverterString.lower(`universalId`),
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{ future, callback, continuation -> UniffiLib.INSTANCE.ffi_affine_mobile_native_rust_future_poll_void(future, callback, continuation) },
|
||||||
|
{ future, continuation -> UniffiLib.INSTANCE.ffi_affine_mobile_native_rust_future_complete_void(future, continuation) },
|
||||||
|
{ future -> UniffiLib.INSTANCE.ffi_affine_mobile_native_rust_future_free_void(future) },
|
||||||
|
// lift function
|
||||||
|
{ Unit },
|
||||||
|
|
||||||
|
// Error FFI converter
|
||||||
|
UniffiException.ErrorHandler,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Throws(UniffiException::class)
|
||||||
|
@Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE")
|
||||||
|
override suspend fun `ftsGetDocument`(`universalId`: kotlin.String, `indexName`: kotlin.String, `docId`: kotlin.String) : kotlin.String? {
|
||||||
|
return uniffiRustCallAsync(
|
||||||
|
callWithPointer { thisPtr ->
|
||||||
|
UniffiLib.INSTANCE.uniffi_affine_mobile_native_fn_method_docstoragepool_fts_get_document(
|
||||||
|
thisPtr,
|
||||||
|
FfiConverterString.lower(`universalId`),FfiConverterString.lower(`indexName`),FfiConverterString.lower(`docId`),
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{ future, callback, continuation -> UniffiLib.INSTANCE.ffi_affine_mobile_native_rust_future_poll_rust_buffer(future, callback, continuation) },
|
||||||
|
{ future, continuation -> UniffiLib.INSTANCE.ffi_affine_mobile_native_rust_future_complete_rust_buffer(future, continuation) },
|
||||||
|
{ future -> UniffiLib.INSTANCE.ffi_affine_mobile_native_rust_future_free_rust_buffer(future) },
|
||||||
|
// lift function
|
||||||
|
{ FfiConverterOptionalString.lift(it) },
|
||||||
|
// Error FFI converter
|
||||||
|
UniffiException.ErrorHandler,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Throws(UniffiException::class)
|
||||||
|
@Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE")
|
||||||
|
override suspend fun `ftsGetMatches`(`universalId`: kotlin.String, `indexName`: kotlin.String, `docId`: kotlin.String, `query`: kotlin.String) : List<MatchRange> {
|
||||||
|
return uniffiRustCallAsync(
|
||||||
|
callWithPointer { thisPtr ->
|
||||||
|
UniffiLib.INSTANCE.uniffi_affine_mobile_native_fn_method_docstoragepool_fts_get_matches(
|
||||||
|
thisPtr,
|
||||||
|
FfiConverterString.lower(`universalId`),FfiConverterString.lower(`indexName`),FfiConverterString.lower(`docId`),FfiConverterString.lower(`query`),
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{ future, callback, continuation -> UniffiLib.INSTANCE.ffi_affine_mobile_native_rust_future_poll_rust_buffer(future, callback, continuation) },
|
||||||
|
{ future, continuation -> UniffiLib.INSTANCE.ffi_affine_mobile_native_rust_future_complete_rust_buffer(future, continuation) },
|
||||||
|
{ future -> UniffiLib.INSTANCE.ffi_affine_mobile_native_rust_future_free_rust_buffer(future) },
|
||||||
|
// lift function
|
||||||
|
{ FfiConverterSequenceTypeMatchRange.lift(it) },
|
||||||
|
// Error FFI converter
|
||||||
|
UniffiException.ErrorHandler,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Throws(UniffiException::class)
|
||||||
|
@Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE")
|
||||||
|
override suspend fun `ftsIndexVersion`() : kotlin.UInt {
|
||||||
|
return uniffiRustCallAsync(
|
||||||
|
callWithPointer { thisPtr ->
|
||||||
|
UniffiLib.INSTANCE.uniffi_affine_mobile_native_fn_method_docstoragepool_fts_index_version(
|
||||||
|
thisPtr,
|
||||||
|
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{ future, callback, continuation -> UniffiLib.INSTANCE.ffi_affine_mobile_native_rust_future_poll_u32(future, callback, continuation) },
|
||||||
|
{ future, continuation -> UniffiLib.INSTANCE.ffi_affine_mobile_native_rust_future_complete_u32(future, continuation) },
|
||||||
|
{ future -> UniffiLib.INSTANCE.ffi_affine_mobile_native_rust_future_free_u32(future) },
|
||||||
|
// lift function
|
||||||
|
{ FfiConverterUInt.lift(it) },
|
||||||
|
// Error FFI converter
|
||||||
|
UniffiException.ErrorHandler,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Throws(UniffiException::class)
|
||||||
|
@Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE")
|
||||||
|
override suspend fun `ftsSearch`(`universalId`: kotlin.String, `indexName`: kotlin.String, `query`: kotlin.String) : List<SearchHit> {
|
||||||
|
return uniffiRustCallAsync(
|
||||||
|
callWithPointer { thisPtr ->
|
||||||
|
UniffiLib.INSTANCE.uniffi_affine_mobile_native_fn_method_docstoragepool_fts_search(
|
||||||
|
thisPtr,
|
||||||
|
FfiConverterString.lower(`universalId`),FfiConverterString.lower(`indexName`),FfiConverterString.lower(`query`),
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{ future, callback, continuation -> UniffiLib.INSTANCE.ffi_affine_mobile_native_rust_future_poll_rust_buffer(future, callback, continuation) },
|
||||||
|
{ future, continuation -> UniffiLib.INSTANCE.ffi_affine_mobile_native_rust_future_complete_rust_buffer(future, continuation) },
|
||||||
|
{ future -> UniffiLib.INSTANCE.ffi_affine_mobile_native_rust_future_free_rust_buffer(future) },
|
||||||
|
// lift function
|
||||||
|
{ FfiConverterSequenceTypeSearchHit.lift(it) },
|
||||||
|
// Error FFI converter
|
||||||
|
UniffiException.ErrorHandler,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Throws(UniffiException::class)
|
@Throws(UniffiException::class)
|
||||||
@Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE")
|
@Suppress("ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE")
|
||||||
override suspend fun `getBlob`(`universalId`: kotlin.String, `key`: kotlin.String) : Blob? {
|
override suspend fun `getBlob`(`universalId`: kotlin.String, `key`: kotlin.String) : Blob? {
|
||||||
@@ -2696,6 +2946,74 @@ public object FfiConverterTypeListedBlob: FfiConverterRustBuffer<ListedBlob> {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
data class MatchRange (
|
||||||
|
var `start`: kotlin.UInt,
|
||||||
|
var `end`: kotlin.UInt
|
||||||
|
) {
|
||||||
|
|
||||||
|
companion object
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @suppress
|
||||||
|
*/
|
||||||
|
public object FfiConverterTypeMatchRange: FfiConverterRustBuffer<MatchRange> {
|
||||||
|
override fun read(buf: ByteBuffer): MatchRange {
|
||||||
|
return MatchRange(
|
||||||
|
FfiConverterUInt.read(buf),
|
||||||
|
FfiConverterUInt.read(buf),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun allocationSize(value: MatchRange) = (
|
||||||
|
FfiConverterUInt.allocationSize(value.`start`) +
|
||||||
|
FfiConverterUInt.allocationSize(value.`end`)
|
||||||
|
)
|
||||||
|
|
||||||
|
override fun write(value: MatchRange, buf: ByteBuffer) {
|
||||||
|
FfiConverterUInt.write(value.`start`, buf)
|
||||||
|
FfiConverterUInt.write(value.`end`, buf)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
data class SearchHit (
|
||||||
|
var `id`: kotlin.String,
|
||||||
|
var `score`: kotlin.Double,
|
||||||
|
var `terms`: List<kotlin.String>
|
||||||
|
) {
|
||||||
|
|
||||||
|
companion object
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @suppress
|
||||||
|
*/
|
||||||
|
public object FfiConverterTypeSearchHit: FfiConverterRustBuffer<SearchHit> {
|
||||||
|
override fun read(buf: ByteBuffer): SearchHit {
|
||||||
|
return SearchHit(
|
||||||
|
FfiConverterString.read(buf),
|
||||||
|
FfiConverterDouble.read(buf),
|
||||||
|
FfiConverterSequenceString.read(buf),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun allocationSize(value: SearchHit) = (
|
||||||
|
FfiConverterString.allocationSize(value.`id`) +
|
||||||
|
FfiConverterDouble.allocationSize(value.`score`) +
|
||||||
|
FfiConverterSequenceString.allocationSize(value.`terms`)
|
||||||
|
)
|
||||||
|
|
||||||
|
override fun write(value: SearchHit, buf: ByteBuffer) {
|
||||||
|
FfiConverterString.write(value.`id`, buf)
|
||||||
|
FfiConverterDouble.write(value.`score`, buf)
|
||||||
|
FfiConverterSequenceString.write(value.`terms`, buf)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
data class SetBlob (
|
data class SetBlob (
|
||||||
var `key`: kotlin.String,
|
var `key`: kotlin.String,
|
||||||
var `data`: kotlin.String,
|
var `data`: kotlin.String,
|
||||||
@@ -3188,6 +3506,62 @@ public object FfiConverterSequenceTypeListedBlob: FfiConverterRustBuffer<List<Li
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @suppress
|
||||||
|
*/
|
||||||
|
public object FfiConverterSequenceTypeMatchRange: FfiConverterRustBuffer<List<MatchRange>> {
|
||||||
|
override fun read(buf: ByteBuffer): List<MatchRange> {
|
||||||
|
val len = buf.getInt()
|
||||||
|
return List<MatchRange>(len) {
|
||||||
|
FfiConverterTypeMatchRange.read(buf)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun allocationSize(value: List<MatchRange>): ULong {
|
||||||
|
val sizeForLength = 4UL
|
||||||
|
val sizeForItems = value.map { FfiConverterTypeMatchRange.allocationSize(it) }.sum()
|
||||||
|
return sizeForLength + sizeForItems
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun write(value: List<MatchRange>, buf: ByteBuffer) {
|
||||||
|
buf.putInt(value.size)
|
||||||
|
value.iterator().forEach {
|
||||||
|
FfiConverterTypeMatchRange.write(it, buf)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @suppress
|
||||||
|
*/
|
||||||
|
public object FfiConverterSequenceTypeSearchHit: FfiConverterRustBuffer<List<SearchHit>> {
|
||||||
|
override fun read(buf: ByteBuffer): List<SearchHit> {
|
||||||
|
val len = buf.getInt()
|
||||||
|
return List<SearchHit>(len) {
|
||||||
|
FfiConverterTypeSearchHit.read(buf)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun allocationSize(value: List<SearchHit>): ULong {
|
||||||
|
val sizeForLength = 4UL
|
||||||
|
val sizeForItems = value.map { FfiConverterTypeSearchHit.allocationSize(it) }.sum()
|
||||||
|
return sizeForLength + sizeForItems
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun write(value: List<SearchHit>, buf: ByteBuffer) {
|
||||||
|
buf.putInt(value.size)
|
||||||
|
value.iterator().forEach {
|
||||||
|
FfiConverterTypeSearchHit.write(it, buf)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -171,7 +171,9 @@ export interface NbStorePlugin {
|
|||||||
id: string;
|
id: string;
|
||||||
indexName: string;
|
indexName: string;
|
||||||
query: string;
|
query: string;
|
||||||
}) => Promise<{ id: string; score: number; terms: Array<string> }[]>;
|
}) => Promise<{
|
||||||
|
results: { id: string; score: number; terms: Array<string> }[];
|
||||||
|
}>;
|
||||||
ftsGetDocument: (options: {
|
ftsGetDocument: (options: {
|
||||||
id: string;
|
id: string;
|
||||||
indexName: string;
|
indexName: string;
|
||||||
@@ -182,7 +184,7 @@ export interface NbStorePlugin {
|
|||||||
indexName: string;
|
indexName: string;
|
||||||
docId: string;
|
docId: string;
|
||||||
query: string;
|
query: string;
|
||||||
}) => Promise<Array<{ start: number; end: number }>>;
|
}) => Promise<{ matches: Array<{ start: number; end: number }> }>;
|
||||||
ftsFlushIndex: (options: { id: string }) => Promise<void>;
|
ftsFlushIndex: (options: { id: string }) => Promise<void>;
|
||||||
ftsIndexVersion: () => Promise<number>;
|
ftsIndexVersion: () => Promise<{ indexVersion: number }>;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -370,11 +370,12 @@ export const NbStoreNativeDBApis: NativeDBApis = {
|
|||||||
indexName: string,
|
indexName: string,
|
||||||
query: string
|
query: string
|
||||||
): Promise<{ id: string; score: number; terms: Array<string> }[]> {
|
): Promise<{ id: string; score: number; terms: Array<string> }[]> {
|
||||||
return await NbStore.ftsSearch({
|
const { results } = await NbStore.ftsSearch({
|
||||||
id,
|
id,
|
||||||
indexName,
|
indexName,
|
||||||
query,
|
query,
|
||||||
});
|
});
|
||||||
|
return results ?? [];
|
||||||
},
|
},
|
||||||
ftsGetDocument: async function (
|
ftsGetDocument: async function (
|
||||||
id: string,
|
id: string,
|
||||||
@@ -394,12 +395,13 @@ export const NbStoreNativeDBApis: NativeDBApis = {
|
|||||||
docId: string,
|
docId: string,
|
||||||
query: string
|
query: string
|
||||||
): Promise<{ start: number; end: number }[]> {
|
): Promise<{ start: number; end: number }[]> {
|
||||||
return await NbStore.ftsGetMatches({
|
const { matches } = await NbStore.ftsGetMatches({
|
||||||
id,
|
id,
|
||||||
indexName,
|
indexName,
|
||||||
docId,
|
docId,
|
||||||
query,
|
query,
|
||||||
});
|
});
|
||||||
|
return matches ?? [];
|
||||||
},
|
},
|
||||||
ftsFlushIndex: async function (id: string): Promise<void> {
|
ftsFlushIndex: async function (id: string): Promise<void> {
|
||||||
await NbStore.ftsFlushIndex({
|
await NbStore.ftsFlushIndex({
|
||||||
@@ -407,6 +409,6 @@ export const NbStoreNativeDBApis: NativeDBApis = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
ftsIndexVersion: function (): Promise<number> {
|
ftsIndexVersion: function (): Promise<number> {
|
||||||
return NbStore.ftsIndexVersion();
|
return NbStore.ftsIndexVersion().then(res => res.indexVersion);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -23,8 +23,8 @@
|
|||||||
"kind" : "remoteSourceControl",
|
"kind" : "remoteSourceControl",
|
||||||
"location" : "https://github.com/Lakr233/ListViewKit",
|
"location" : "https://github.com/Lakr233/ListViewKit",
|
||||||
"state" : {
|
"state" : {
|
||||||
"revision" : "a4372d7f90c846d834c1f1575d1af0050d70fa0f",
|
"revision" : "5dea05a52a6c2c7bb013a5925c517d6e32940605",
|
||||||
"version" : "1.1.6"
|
"version" : "1.1.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -41,8 +41,17 @@
|
|||||||
"kind" : "remoteSourceControl",
|
"kind" : "remoteSourceControl",
|
||||||
"location" : "https://github.com/Lakr233/MarkdownView",
|
"location" : "https://github.com/Lakr233/MarkdownView",
|
||||||
"state" : {
|
"state" : {
|
||||||
"revision" : "c052f57768436212c91e4369d76181c38eaa3ba3",
|
"revision" : "20fa808889944921e8da3a1c8317e8a557db373e",
|
||||||
"version" : "3.4.2"
|
"version" : "3.4.7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identity" : "msdisplaylink",
|
||||||
|
"kind" : "remoteSourceControl",
|
||||||
|
"location" : "https://github.com/Lakr233/MSDisplayLink",
|
||||||
|
"state" : {
|
||||||
|
"revision" : "ebf5823cb5fc1326639d9a05bc06d16bbe82989f",
|
||||||
|
"version" : "2.0.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -77,8 +86,8 @@
|
|||||||
"kind" : "remoteSourceControl",
|
"kind" : "remoteSourceControl",
|
||||||
"location" : "https://github.com/Lakr233/SpringInterpolation",
|
"location" : "https://github.com/Lakr233/SpringInterpolation",
|
||||||
"state" : {
|
"state" : {
|
||||||
"revision" : "f9ae95ece5d6b7cdceafd4381f1d5f0f9494e5d2",
|
"revision" : "cdb556516daa9b43c16aae9436dd39e19ff930fd",
|
||||||
"version" : "1.3.1"
|
"version" : "1.4.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -95,8 +104,8 @@
|
|||||||
"kind" : "remoteSourceControl",
|
"kind" : "remoteSourceControl",
|
||||||
"location" : "https://github.com/apple/swift-collections",
|
"location" : "https://github.com/apple/swift-collections",
|
||||||
"state" : {
|
"state" : {
|
||||||
"revision" : "8c0c0a8b49e080e54e5e328cc552821ff07cd341",
|
"revision" : "7b847a3b7008b2dc2f47ca3110d8c782fb2e5c7e",
|
||||||
"version" : "1.2.1"
|
"version" : "1.3.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -36,6 +36,14 @@ public class NbStorePlugin: CAPPlugin, CAPBridgedPlugin {
|
|||||||
CAPPluginMethod(name: "clearClocks", returnType: CAPPluginReturnPromise),
|
CAPPluginMethod(name: "clearClocks", returnType: CAPPluginReturnPromise),
|
||||||
CAPPluginMethod(name: "getBlobUploadedAt", returnType: CAPPluginReturnPromise),
|
CAPPluginMethod(name: "getBlobUploadedAt", returnType: CAPPluginReturnPromise),
|
||||||
CAPPluginMethod(name: "setBlobUploadedAt", returnType: CAPPluginReturnPromise),
|
CAPPluginMethod(name: "setBlobUploadedAt", returnType: CAPPluginReturnPromise),
|
||||||
|
CAPPluginMethod(name: "crawlDocData", returnType: CAPPluginReturnPromise),
|
||||||
|
CAPPluginMethod(name: "ftsAddDocument", returnType: CAPPluginReturnPromise),
|
||||||
|
CAPPluginMethod(name: "ftsDeleteDocument", returnType: CAPPluginReturnPromise),
|
||||||
|
CAPPluginMethod(name: "ftsSearch", returnType: CAPPluginReturnPromise),
|
||||||
|
CAPPluginMethod(name: "ftsGetDocument", returnType: CAPPluginReturnPromise),
|
||||||
|
CAPPluginMethod(name: "ftsGetMatches", returnType: CAPPluginReturnPromise),
|
||||||
|
CAPPluginMethod(name: "ftsFlushIndex", returnType: CAPPluginReturnPromise),
|
||||||
|
CAPPluginMethod(name: "ftsIndexVersion", returnType: CAPPluginReturnPromise),
|
||||||
]
|
]
|
||||||
|
|
||||||
@objc func connect(_ call: CAPPluginCall) {
|
@objc func connect(_ call: CAPPluginCall) {
|
||||||
@@ -546,4 +554,169 @@ public class NbStorePlugin: CAPPlugin, CAPBridgedPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@objc func crawlDocData(_ call: CAPPluginCall) {
|
||||||
|
Task {
|
||||||
|
do {
|
||||||
|
let id = try call.getStringEnsure("id")
|
||||||
|
let docId = try call.getStringEnsure("docId")
|
||||||
|
let result = try await docStoragePool.crawlDocData(universalId: id, docId: docId)
|
||||||
|
let blocks = result.blocks.map {
|
||||||
|
[
|
||||||
|
"blockId": $0.blockId,
|
||||||
|
"flavour": $0.flavour,
|
||||||
|
"content": $0.content as Any,
|
||||||
|
"blob": $0.blob as Any,
|
||||||
|
"refDocId": $0.refDocId as Any,
|
||||||
|
"refInfo": $0.refInfo as Any,
|
||||||
|
"parentFlavour": $0.parentFlavour as Any,
|
||||||
|
"parentBlockId": $0.parentBlockId as Any,
|
||||||
|
"additional": $0.additional as Any,
|
||||||
|
]
|
||||||
|
}
|
||||||
|
call.resolve([
|
||||||
|
"title": result.title,
|
||||||
|
"summary": result.summary,
|
||||||
|
"blocks": blocks,
|
||||||
|
])
|
||||||
|
} catch {
|
||||||
|
call.reject("Failed to crawl doc data, \(error)", nil, error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc func ftsAddDocument(_ call: CAPPluginCall) {
|
||||||
|
Task {
|
||||||
|
do {
|
||||||
|
let id = try call.getStringEnsure("id")
|
||||||
|
let indexName = try call.getStringEnsure("indexName")
|
||||||
|
let docId = try call.getStringEnsure("docId")
|
||||||
|
let text = try call.getStringEnsure("text")
|
||||||
|
guard let index = call.getBool("index") else {
|
||||||
|
call.reject("index is required", nil, nil)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
try await docStoragePool.ftsAddDocument(
|
||||||
|
universalId: id,
|
||||||
|
indexName: indexName,
|
||||||
|
docId: docId,
|
||||||
|
text: text,
|
||||||
|
index: index
|
||||||
|
)
|
||||||
|
call.resolve()
|
||||||
|
} catch {
|
||||||
|
call.reject("Failed to add document to fts, \(error)", nil, error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc func ftsDeleteDocument(_ call: CAPPluginCall) {
|
||||||
|
Task {
|
||||||
|
do {
|
||||||
|
let id = try call.getStringEnsure("id")
|
||||||
|
let indexName = try call.getStringEnsure("indexName")
|
||||||
|
let docId = try call.getStringEnsure("docId")
|
||||||
|
try await docStoragePool.ftsDeleteDocument(
|
||||||
|
universalId: id,
|
||||||
|
indexName: indexName,
|
||||||
|
docId: docId
|
||||||
|
)
|
||||||
|
call.resolve()
|
||||||
|
} catch {
|
||||||
|
call.reject("Failed to delete document from fts, \(error)", nil, error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc func ftsSearch(_ call: CAPPluginCall) {
|
||||||
|
Task {
|
||||||
|
do {
|
||||||
|
let id = try call.getStringEnsure("id")
|
||||||
|
let indexName = try call.getStringEnsure("indexName")
|
||||||
|
let query = try call.getStringEnsure("query")
|
||||||
|
let results = try await docStoragePool.ftsSearch(
|
||||||
|
universalId: id,
|
||||||
|
indexName: indexName,
|
||||||
|
query: query
|
||||||
|
)
|
||||||
|
let mapped = results.map {
|
||||||
|
[
|
||||||
|
"id": $0.id,
|
||||||
|
"score": $0.score,
|
||||||
|
"terms": $0.terms,
|
||||||
|
] as [String: Any]
|
||||||
|
}
|
||||||
|
call.resolve(["results": mapped])
|
||||||
|
} catch {
|
||||||
|
call.reject("Failed to search fts, \(error)", nil, error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc func ftsGetDocument(_ call: CAPPluginCall) {
|
||||||
|
Task {
|
||||||
|
do {
|
||||||
|
let id = try call.getStringEnsure("id")
|
||||||
|
let indexName = try call.getStringEnsure("indexName")
|
||||||
|
let docId = try call.getStringEnsure("docId")
|
||||||
|
let text = try await docStoragePool.ftsGetDocument(
|
||||||
|
universalId: id,
|
||||||
|
indexName: indexName,
|
||||||
|
docId: docId
|
||||||
|
)
|
||||||
|
call.resolve(["text": text as Any])
|
||||||
|
} catch {
|
||||||
|
call.reject("Failed to get fts document, \(error)", nil, error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc func ftsGetMatches(_ call: CAPPluginCall) {
|
||||||
|
Task {
|
||||||
|
do {
|
||||||
|
let id = try call.getStringEnsure("id")
|
||||||
|
let indexName = try call.getStringEnsure("indexName")
|
||||||
|
let docId = try call.getStringEnsure("docId")
|
||||||
|
let query = try call.getStringEnsure("query")
|
||||||
|
let matches = try await docStoragePool.ftsGetMatches(
|
||||||
|
universalId: id,
|
||||||
|
indexName: indexName,
|
||||||
|
docId: docId,
|
||||||
|
query: query
|
||||||
|
)
|
||||||
|
let mapped = matches.map {
|
||||||
|
[
|
||||||
|
"start": $0.start,
|
||||||
|
"end": $0.end,
|
||||||
|
]
|
||||||
|
}
|
||||||
|
call.resolve(["matches": mapped])
|
||||||
|
} catch {
|
||||||
|
call.reject("Failed to get fts matches, \(error)", nil, error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc func ftsFlushIndex(_ call: CAPPluginCall) {
|
||||||
|
Task {
|
||||||
|
do {
|
||||||
|
let id = try call.getStringEnsure("id")
|
||||||
|
try await docStoragePool.ftsFlushIndex(universalId: id)
|
||||||
|
call.resolve()
|
||||||
|
} catch {
|
||||||
|
call.reject("Failed to flush fts index, \(error)", nil, error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc func ftsIndexVersion(_ call: CAPPluginCall) {
|
||||||
|
Task {
|
||||||
|
do {
|
||||||
|
let version = try await docStoragePool.ftsIndexVersion()
|
||||||
|
call.resolve(["indexVersion": version])
|
||||||
|
} catch {
|
||||||
|
call.reject("Failed to get fts index version, \(error)", nil, error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -429,6 +429,22 @@ fileprivate struct FfiConverterInt64: FfiConverterPrimitive {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if swift(>=5.8)
|
||||||
|
@_documentation(visibility: private)
|
||||||
|
#endif
|
||||||
|
fileprivate struct FfiConverterDouble: FfiConverterPrimitive {
|
||||||
|
typealias FfiType = Double
|
||||||
|
typealias SwiftType = Double
|
||||||
|
|
||||||
|
public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> Double {
|
||||||
|
return try lift(readDouble(&buf))
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func write(_ value: Double, into buf: inout [UInt8]) {
|
||||||
|
writeDouble(&buf, lower(value))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#if swift(>=5.8)
|
#if swift(>=5.8)
|
||||||
@_documentation(visibility: private)
|
@_documentation(visibility: private)
|
||||||
#endif
|
#endif
|
||||||
@@ -506,12 +522,28 @@ public protocol DocStoragePoolProtocol: AnyObject, Sendable {
|
|||||||
*/
|
*/
|
||||||
func connect(universalId: String, path: String) async throws
|
func connect(universalId: String, path: String) async throws
|
||||||
|
|
||||||
|
func crawlDocData(universalId: String, docId: String) async throws -> CrawlResult
|
||||||
|
|
||||||
func deleteBlob(universalId: String, key: String, permanently: Bool) async throws
|
func deleteBlob(universalId: String, key: String, permanently: Bool) async throws
|
||||||
|
|
||||||
func deleteDoc(universalId: String, docId: String) async throws
|
func deleteDoc(universalId: String, docId: String) async throws
|
||||||
|
|
||||||
func disconnect(universalId: String) async throws
|
func disconnect(universalId: String) async throws
|
||||||
|
|
||||||
|
func ftsAddDocument(universalId: String, indexName: String, docId: String, text: String, index: Bool) async throws
|
||||||
|
|
||||||
|
func ftsDeleteDocument(universalId: String, indexName: String, docId: String) async throws
|
||||||
|
|
||||||
|
func ftsFlushIndex(universalId: String) async throws
|
||||||
|
|
||||||
|
func ftsGetDocument(universalId: String, indexName: String, docId: String) async throws -> String?
|
||||||
|
|
||||||
|
func ftsGetMatches(universalId: String, indexName: String, docId: String, query: String) async throws -> [MatchRange]
|
||||||
|
|
||||||
|
func ftsIndexVersion() async throws -> UInt32
|
||||||
|
|
||||||
|
func ftsSearch(universalId: String, indexName: String, query: String) async throws -> [SearchHit]
|
||||||
|
|
||||||
func getBlob(universalId: String, key: String) async throws -> Blob?
|
func getBlob(universalId: String, key: String) async throws -> Blob?
|
||||||
|
|
||||||
func getBlobUploadedAt(universalId: String, peer: String, blobId: String) async throws -> Int64?
|
func getBlobUploadedAt(universalId: String, peer: String, blobId: String) async throws -> Int64?
|
||||||
@@ -648,6 +680,23 @@ open func connect(universalId: String, path: String)async throws {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open func crawlDocData(universalId: String, docId: String)async throws -> CrawlResult {
|
||||||
|
return
|
||||||
|
try await uniffiRustCallAsync(
|
||||||
|
rustFutureFunc: {
|
||||||
|
uniffi_affine_mobile_native_fn_method_docstoragepool_crawl_doc_data(
|
||||||
|
self.uniffiClonePointer(),
|
||||||
|
FfiConverterString.lower(universalId),FfiConverterString.lower(docId)
|
||||||
|
)
|
||||||
|
},
|
||||||
|
pollFunc: ffi_affine_mobile_native_rust_future_poll_rust_buffer,
|
||||||
|
completeFunc: ffi_affine_mobile_native_rust_future_complete_rust_buffer,
|
||||||
|
freeFunc: ffi_affine_mobile_native_rust_future_free_rust_buffer,
|
||||||
|
liftFunc: FfiConverterTypeCrawlResult_lift,
|
||||||
|
errorHandler: FfiConverterTypeUniffiError_lift
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
open func deleteBlob(universalId: String, key: String, permanently: Bool)async throws {
|
open func deleteBlob(universalId: String, key: String, permanently: Bool)async throws {
|
||||||
return
|
return
|
||||||
try await uniffiRustCallAsync(
|
try await uniffiRustCallAsync(
|
||||||
@@ -699,6 +748,125 @@ open func disconnect(universalId: String)async throws {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open func ftsAddDocument(universalId: String, indexName: String, docId: String, text: String, index: Bool)async throws {
|
||||||
|
return
|
||||||
|
try await uniffiRustCallAsync(
|
||||||
|
rustFutureFunc: {
|
||||||
|
uniffi_affine_mobile_native_fn_method_docstoragepool_fts_add_document(
|
||||||
|
self.uniffiClonePointer(),
|
||||||
|
FfiConverterString.lower(universalId),FfiConverterString.lower(indexName),FfiConverterString.lower(docId),FfiConverterString.lower(text),FfiConverterBool.lower(index)
|
||||||
|
)
|
||||||
|
},
|
||||||
|
pollFunc: ffi_affine_mobile_native_rust_future_poll_void,
|
||||||
|
completeFunc: ffi_affine_mobile_native_rust_future_complete_void,
|
||||||
|
freeFunc: ffi_affine_mobile_native_rust_future_free_void,
|
||||||
|
liftFunc: { $0 },
|
||||||
|
errorHandler: FfiConverterTypeUniffiError_lift
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
open func ftsDeleteDocument(universalId: String, indexName: String, docId: String)async throws {
|
||||||
|
return
|
||||||
|
try await uniffiRustCallAsync(
|
||||||
|
rustFutureFunc: {
|
||||||
|
uniffi_affine_mobile_native_fn_method_docstoragepool_fts_delete_document(
|
||||||
|
self.uniffiClonePointer(),
|
||||||
|
FfiConverterString.lower(universalId),FfiConverterString.lower(indexName),FfiConverterString.lower(docId)
|
||||||
|
)
|
||||||
|
},
|
||||||
|
pollFunc: ffi_affine_mobile_native_rust_future_poll_void,
|
||||||
|
completeFunc: ffi_affine_mobile_native_rust_future_complete_void,
|
||||||
|
freeFunc: ffi_affine_mobile_native_rust_future_free_void,
|
||||||
|
liftFunc: { $0 },
|
||||||
|
errorHandler: FfiConverterTypeUniffiError_lift
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
open func ftsFlushIndex(universalId: String)async throws {
|
||||||
|
return
|
||||||
|
try await uniffiRustCallAsync(
|
||||||
|
rustFutureFunc: {
|
||||||
|
uniffi_affine_mobile_native_fn_method_docstoragepool_fts_flush_index(
|
||||||
|
self.uniffiClonePointer(),
|
||||||
|
FfiConverterString.lower(universalId)
|
||||||
|
)
|
||||||
|
},
|
||||||
|
pollFunc: ffi_affine_mobile_native_rust_future_poll_void,
|
||||||
|
completeFunc: ffi_affine_mobile_native_rust_future_complete_void,
|
||||||
|
freeFunc: ffi_affine_mobile_native_rust_future_free_void,
|
||||||
|
liftFunc: { $0 },
|
||||||
|
errorHandler: FfiConverterTypeUniffiError_lift
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
open func ftsGetDocument(universalId: String, indexName: String, docId: String)async throws -> String? {
|
||||||
|
return
|
||||||
|
try await uniffiRustCallAsync(
|
||||||
|
rustFutureFunc: {
|
||||||
|
uniffi_affine_mobile_native_fn_method_docstoragepool_fts_get_document(
|
||||||
|
self.uniffiClonePointer(),
|
||||||
|
FfiConverterString.lower(universalId),FfiConverterString.lower(indexName),FfiConverterString.lower(docId)
|
||||||
|
)
|
||||||
|
},
|
||||||
|
pollFunc: ffi_affine_mobile_native_rust_future_poll_rust_buffer,
|
||||||
|
completeFunc: ffi_affine_mobile_native_rust_future_complete_rust_buffer,
|
||||||
|
freeFunc: ffi_affine_mobile_native_rust_future_free_rust_buffer,
|
||||||
|
liftFunc: FfiConverterOptionString.lift,
|
||||||
|
errorHandler: FfiConverterTypeUniffiError_lift
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
open func ftsGetMatches(universalId: String, indexName: String, docId: String, query: String)async throws -> [MatchRange] {
|
||||||
|
return
|
||||||
|
try await uniffiRustCallAsync(
|
||||||
|
rustFutureFunc: {
|
||||||
|
uniffi_affine_mobile_native_fn_method_docstoragepool_fts_get_matches(
|
||||||
|
self.uniffiClonePointer(),
|
||||||
|
FfiConverterString.lower(universalId),FfiConverterString.lower(indexName),FfiConverterString.lower(docId),FfiConverterString.lower(query)
|
||||||
|
)
|
||||||
|
},
|
||||||
|
pollFunc: ffi_affine_mobile_native_rust_future_poll_rust_buffer,
|
||||||
|
completeFunc: ffi_affine_mobile_native_rust_future_complete_rust_buffer,
|
||||||
|
freeFunc: ffi_affine_mobile_native_rust_future_free_rust_buffer,
|
||||||
|
liftFunc: FfiConverterSequenceTypeMatchRange.lift,
|
||||||
|
errorHandler: FfiConverterTypeUniffiError_lift
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
open func ftsIndexVersion()async throws -> UInt32 {
|
||||||
|
return
|
||||||
|
try await uniffiRustCallAsync(
|
||||||
|
rustFutureFunc: {
|
||||||
|
uniffi_affine_mobile_native_fn_method_docstoragepool_fts_index_version(
|
||||||
|
self.uniffiClonePointer()
|
||||||
|
|
||||||
|
)
|
||||||
|
},
|
||||||
|
pollFunc: ffi_affine_mobile_native_rust_future_poll_u32,
|
||||||
|
completeFunc: ffi_affine_mobile_native_rust_future_complete_u32,
|
||||||
|
freeFunc: ffi_affine_mobile_native_rust_future_free_u32,
|
||||||
|
liftFunc: FfiConverterUInt32.lift,
|
||||||
|
errorHandler: FfiConverterTypeUniffiError_lift
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
open func ftsSearch(universalId: String, indexName: String, query: String)async throws -> [SearchHit] {
|
||||||
|
return
|
||||||
|
try await uniffiRustCallAsync(
|
||||||
|
rustFutureFunc: {
|
||||||
|
uniffi_affine_mobile_native_fn_method_docstoragepool_fts_search(
|
||||||
|
self.uniffiClonePointer(),
|
||||||
|
FfiConverterString.lower(universalId),FfiConverterString.lower(indexName),FfiConverterString.lower(query)
|
||||||
|
)
|
||||||
|
},
|
||||||
|
pollFunc: ffi_affine_mobile_native_rust_future_poll_rust_buffer,
|
||||||
|
completeFunc: ffi_affine_mobile_native_rust_future_complete_rust_buffer,
|
||||||
|
freeFunc: ffi_affine_mobile_native_rust_future_free_rust_buffer,
|
||||||
|
liftFunc: FfiConverterSequenceTypeSearchHit.lift,
|
||||||
|
errorHandler: FfiConverterTypeUniffiError_lift
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
open func getBlob(universalId: String, key: String)async throws -> Blob? {
|
open func getBlob(universalId: String, key: String)async throws -> Blob? {
|
||||||
return
|
return
|
||||||
try await uniffiRustCallAsync(
|
try await uniffiRustCallAsync(
|
||||||
@@ -1240,6 +1408,210 @@ public func FfiConverterTypeBlob_lower(_ value: Blob) -> RustBuffer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public struct BlockInfo {
|
||||||
|
public var blockId: String
|
||||||
|
public var flavour: String
|
||||||
|
public var content: [String]?
|
||||||
|
public var blob: [String]?
|
||||||
|
public var refDocId: [String]?
|
||||||
|
public var refInfo: [String]?
|
||||||
|
public var parentFlavour: String?
|
||||||
|
public var parentBlockId: String?
|
||||||
|
public var additional: String?
|
||||||
|
|
||||||
|
// Default memberwise initializers are never public by default, so we
|
||||||
|
// declare one manually.
|
||||||
|
public init(blockId: String, flavour: String, content: [String]?, blob: [String]?, refDocId: [String]?, refInfo: [String]?, parentFlavour: String?, parentBlockId: String?, additional: String?) {
|
||||||
|
self.blockId = blockId
|
||||||
|
self.flavour = flavour
|
||||||
|
self.content = content
|
||||||
|
self.blob = blob
|
||||||
|
self.refDocId = refDocId
|
||||||
|
self.refInfo = refInfo
|
||||||
|
self.parentFlavour = parentFlavour
|
||||||
|
self.parentBlockId = parentBlockId
|
||||||
|
self.additional = additional
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if compiler(>=6)
|
||||||
|
extension BlockInfo: Sendable {}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
extension BlockInfo: Equatable, Hashable {
|
||||||
|
public static func ==(lhs: BlockInfo, rhs: BlockInfo) -> Bool {
|
||||||
|
if lhs.blockId != rhs.blockId {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if lhs.flavour != rhs.flavour {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if lhs.content != rhs.content {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if lhs.blob != rhs.blob {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if lhs.refDocId != rhs.refDocId {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if lhs.refInfo != rhs.refInfo {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if lhs.parentFlavour != rhs.parentFlavour {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if lhs.parentBlockId != rhs.parentBlockId {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if lhs.additional != rhs.additional {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
public func hash(into hasher: inout Hasher) {
|
||||||
|
hasher.combine(blockId)
|
||||||
|
hasher.combine(flavour)
|
||||||
|
hasher.combine(content)
|
||||||
|
hasher.combine(blob)
|
||||||
|
hasher.combine(refDocId)
|
||||||
|
hasher.combine(refInfo)
|
||||||
|
hasher.combine(parentFlavour)
|
||||||
|
hasher.combine(parentBlockId)
|
||||||
|
hasher.combine(additional)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#if swift(>=5.8)
|
||||||
|
@_documentation(visibility: private)
|
||||||
|
#endif
|
||||||
|
public struct FfiConverterTypeBlockInfo: FfiConverterRustBuffer {
|
||||||
|
public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> BlockInfo {
|
||||||
|
return
|
||||||
|
try BlockInfo(
|
||||||
|
blockId: FfiConverterString.read(from: &buf),
|
||||||
|
flavour: FfiConverterString.read(from: &buf),
|
||||||
|
content: FfiConverterOptionSequenceString.read(from: &buf),
|
||||||
|
blob: FfiConverterOptionSequenceString.read(from: &buf),
|
||||||
|
refDocId: FfiConverterOptionSequenceString.read(from: &buf),
|
||||||
|
refInfo: FfiConverterOptionSequenceString.read(from: &buf),
|
||||||
|
parentFlavour: FfiConverterOptionString.read(from: &buf),
|
||||||
|
parentBlockId: FfiConverterOptionString.read(from: &buf),
|
||||||
|
additional: FfiConverterOptionString.read(from: &buf)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func write(_ value: BlockInfo, into buf: inout [UInt8]) {
|
||||||
|
FfiConverterString.write(value.blockId, into: &buf)
|
||||||
|
FfiConverterString.write(value.flavour, into: &buf)
|
||||||
|
FfiConverterOptionSequenceString.write(value.content, into: &buf)
|
||||||
|
FfiConverterOptionSequenceString.write(value.blob, into: &buf)
|
||||||
|
FfiConverterOptionSequenceString.write(value.refDocId, into: &buf)
|
||||||
|
FfiConverterOptionSequenceString.write(value.refInfo, into: &buf)
|
||||||
|
FfiConverterOptionString.write(value.parentFlavour, into: &buf)
|
||||||
|
FfiConverterOptionString.write(value.parentBlockId, into: &buf)
|
||||||
|
FfiConverterOptionString.write(value.additional, into: &buf)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if swift(>=5.8)
|
||||||
|
@_documentation(visibility: private)
|
||||||
|
#endif
|
||||||
|
public func FfiConverterTypeBlockInfo_lift(_ buf: RustBuffer) throws -> BlockInfo {
|
||||||
|
return try FfiConverterTypeBlockInfo.lift(buf)
|
||||||
|
}
|
||||||
|
|
||||||
|
#if swift(>=5.8)
|
||||||
|
@_documentation(visibility: private)
|
||||||
|
#endif
|
||||||
|
public func FfiConverterTypeBlockInfo_lower(_ value: BlockInfo) -> RustBuffer {
|
||||||
|
return FfiConverterTypeBlockInfo.lower(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public struct CrawlResult {
|
||||||
|
public var blocks: [BlockInfo]
|
||||||
|
public var title: String
|
||||||
|
public var summary: String
|
||||||
|
|
||||||
|
// Default memberwise initializers are never public by default, so we
|
||||||
|
// declare one manually.
|
||||||
|
public init(blocks: [BlockInfo], title: String, summary: String) {
|
||||||
|
self.blocks = blocks
|
||||||
|
self.title = title
|
||||||
|
self.summary = summary
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if compiler(>=6)
|
||||||
|
extension CrawlResult: Sendable {}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
extension CrawlResult: Equatable, Hashable {
|
||||||
|
public static func ==(lhs: CrawlResult, rhs: CrawlResult) -> Bool {
|
||||||
|
if lhs.blocks != rhs.blocks {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if lhs.title != rhs.title {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if lhs.summary != rhs.summary {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
public func hash(into hasher: inout Hasher) {
|
||||||
|
hasher.combine(blocks)
|
||||||
|
hasher.combine(title)
|
||||||
|
hasher.combine(summary)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#if swift(>=5.8)
|
||||||
|
@_documentation(visibility: private)
|
||||||
|
#endif
|
||||||
|
public struct FfiConverterTypeCrawlResult: FfiConverterRustBuffer {
|
||||||
|
public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> CrawlResult {
|
||||||
|
return
|
||||||
|
try CrawlResult(
|
||||||
|
blocks: FfiConverterSequenceTypeBlockInfo.read(from: &buf),
|
||||||
|
title: FfiConverterString.read(from: &buf),
|
||||||
|
summary: FfiConverterString.read(from: &buf)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func write(_ value: CrawlResult, into buf: inout [UInt8]) {
|
||||||
|
FfiConverterSequenceTypeBlockInfo.write(value.blocks, into: &buf)
|
||||||
|
FfiConverterString.write(value.title, into: &buf)
|
||||||
|
FfiConverterString.write(value.summary, into: &buf)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if swift(>=5.8)
|
||||||
|
@_documentation(visibility: private)
|
||||||
|
#endif
|
||||||
|
public func FfiConverterTypeCrawlResult_lift(_ buf: RustBuffer) throws -> CrawlResult {
|
||||||
|
return try FfiConverterTypeCrawlResult.lift(buf)
|
||||||
|
}
|
||||||
|
|
||||||
|
#if swift(>=5.8)
|
||||||
|
@_documentation(visibility: private)
|
||||||
|
#endif
|
||||||
|
public func FfiConverterTypeCrawlResult_lower(_ value: CrawlResult) -> RustBuffer {
|
||||||
|
return FfiConverterTypeCrawlResult.lower(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public struct DocClock {
|
public struct DocClock {
|
||||||
public var docId: String
|
public var docId: String
|
||||||
public var timestamp: Int64
|
public var timestamp: Int64
|
||||||
@@ -1552,6 +1924,154 @@ public func FfiConverterTypeListedBlob_lower(_ value: ListedBlob) -> RustBuffer
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public struct MatchRange {
|
||||||
|
public var start: UInt32
|
||||||
|
public var end: UInt32
|
||||||
|
|
||||||
|
// Default memberwise initializers are never public by default, so we
|
||||||
|
// declare one manually.
|
||||||
|
public init(start: UInt32, end: UInt32) {
|
||||||
|
self.start = start
|
||||||
|
self.end = end
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if compiler(>=6)
|
||||||
|
extension MatchRange: Sendable {}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
extension MatchRange: Equatable, Hashable {
|
||||||
|
public static func ==(lhs: MatchRange, rhs: MatchRange) -> Bool {
|
||||||
|
if lhs.start != rhs.start {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if lhs.end != rhs.end {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
public func hash(into hasher: inout Hasher) {
|
||||||
|
hasher.combine(start)
|
||||||
|
hasher.combine(end)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#if swift(>=5.8)
|
||||||
|
@_documentation(visibility: private)
|
||||||
|
#endif
|
||||||
|
public struct FfiConverterTypeMatchRange: FfiConverterRustBuffer {
|
||||||
|
public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MatchRange {
|
||||||
|
return
|
||||||
|
try MatchRange(
|
||||||
|
start: FfiConverterUInt32.read(from: &buf),
|
||||||
|
end: FfiConverterUInt32.read(from: &buf)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func write(_ value: MatchRange, into buf: inout [UInt8]) {
|
||||||
|
FfiConverterUInt32.write(value.start, into: &buf)
|
||||||
|
FfiConverterUInt32.write(value.end, into: &buf)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if swift(>=5.8)
|
||||||
|
@_documentation(visibility: private)
|
||||||
|
#endif
|
||||||
|
public func FfiConverterTypeMatchRange_lift(_ buf: RustBuffer) throws -> MatchRange {
|
||||||
|
return try FfiConverterTypeMatchRange.lift(buf)
|
||||||
|
}
|
||||||
|
|
||||||
|
#if swift(>=5.8)
|
||||||
|
@_documentation(visibility: private)
|
||||||
|
#endif
|
||||||
|
public func FfiConverterTypeMatchRange_lower(_ value: MatchRange) -> RustBuffer {
|
||||||
|
return FfiConverterTypeMatchRange.lower(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public struct SearchHit {
|
||||||
|
public var id: String
|
||||||
|
public var score: Double
|
||||||
|
public var terms: [String]
|
||||||
|
|
||||||
|
// Default memberwise initializers are never public by default, so we
|
||||||
|
// declare one manually.
|
||||||
|
public init(id: String, score: Double, terms: [String]) {
|
||||||
|
self.id = id
|
||||||
|
self.score = score
|
||||||
|
self.terms = terms
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if compiler(>=6)
|
||||||
|
extension SearchHit: Sendable {}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
extension SearchHit: Equatable, Hashable {
|
||||||
|
public static func ==(lhs: SearchHit, rhs: SearchHit) -> Bool {
|
||||||
|
if lhs.id != rhs.id {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if lhs.score != rhs.score {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if lhs.terms != rhs.terms {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
public func hash(into hasher: inout Hasher) {
|
||||||
|
hasher.combine(id)
|
||||||
|
hasher.combine(score)
|
||||||
|
hasher.combine(terms)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#if swift(>=5.8)
|
||||||
|
@_documentation(visibility: private)
|
||||||
|
#endif
|
||||||
|
public struct FfiConverterTypeSearchHit: FfiConverterRustBuffer {
|
||||||
|
public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SearchHit {
|
||||||
|
return
|
||||||
|
try SearchHit(
|
||||||
|
id: FfiConverterString.read(from: &buf),
|
||||||
|
score: FfiConverterDouble.read(from: &buf),
|
||||||
|
terms: FfiConverterSequenceString.read(from: &buf)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func write(_ value: SearchHit, into buf: inout [UInt8]) {
|
||||||
|
FfiConverterString.write(value.id, into: &buf)
|
||||||
|
FfiConverterDouble.write(value.score, into: &buf)
|
||||||
|
FfiConverterSequenceString.write(value.terms, into: &buf)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if swift(>=5.8)
|
||||||
|
@_documentation(visibility: private)
|
||||||
|
#endif
|
||||||
|
public func FfiConverterTypeSearchHit_lift(_ buf: RustBuffer) throws -> SearchHit {
|
||||||
|
return try FfiConverterTypeSearchHit.lift(buf)
|
||||||
|
}
|
||||||
|
|
||||||
|
#if swift(>=5.8)
|
||||||
|
@_documentation(visibility: private)
|
||||||
|
#endif
|
||||||
|
public func FfiConverterTypeSearchHit_lower(_ value: SearchHit) -> RustBuffer {
|
||||||
|
return FfiConverterTypeSearchHit.lower(value)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public struct SetBlob {
|
public struct SetBlob {
|
||||||
public var key: String
|
public var key: String
|
||||||
public var data: String
|
public var data: String
|
||||||
@@ -1745,6 +2265,30 @@ fileprivate struct FfiConverterOptionInt64: FfiConverterRustBuffer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if swift(>=5.8)
|
||||||
|
@_documentation(visibility: private)
|
||||||
|
#endif
|
||||||
|
fileprivate struct FfiConverterOptionString: FfiConverterRustBuffer {
|
||||||
|
typealias SwiftType = String?
|
||||||
|
|
||||||
|
public static func write(_ value: SwiftType, into buf: inout [UInt8]) {
|
||||||
|
guard let value = value else {
|
||||||
|
writeInt(&buf, Int8(0))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
writeInt(&buf, Int8(1))
|
||||||
|
FfiConverterString.write(value, into: &buf)
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SwiftType {
|
||||||
|
switch try readInt(&buf) as Int8 {
|
||||||
|
case 0: return nil
|
||||||
|
case 1: return try FfiConverterString.read(from: &buf)
|
||||||
|
default: throw UniffiInternalError.unexpectedOptionalTag
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#if swift(>=5.8)
|
#if swift(>=5.8)
|
||||||
@_documentation(visibility: private)
|
@_documentation(visibility: private)
|
||||||
#endif
|
#endif
|
||||||
@@ -1817,6 +2361,30 @@ fileprivate struct FfiConverterOptionTypeDocRecord: FfiConverterRustBuffer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if swift(>=5.8)
|
||||||
|
@_documentation(visibility: private)
|
||||||
|
#endif
|
||||||
|
fileprivate struct FfiConverterOptionSequenceString: FfiConverterRustBuffer {
|
||||||
|
typealias SwiftType = [String]?
|
||||||
|
|
||||||
|
public static func write(_ value: SwiftType, into buf: inout [UInt8]) {
|
||||||
|
guard let value = value else {
|
||||||
|
writeInt(&buf, Int8(0))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
writeInt(&buf, Int8(1))
|
||||||
|
FfiConverterSequenceString.write(value, into: &buf)
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SwiftType {
|
||||||
|
switch try readInt(&buf) as Int8 {
|
||||||
|
case 0: return nil
|
||||||
|
case 1: return try FfiConverterSequenceString.read(from: &buf)
|
||||||
|
default: throw UniffiInternalError.unexpectedOptionalTag
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#if swift(>=5.8)
|
#if swift(>=5.8)
|
||||||
@_documentation(visibility: private)
|
@_documentation(visibility: private)
|
||||||
#endif
|
#endif
|
||||||
@@ -1842,6 +2410,56 @@ fileprivate struct FfiConverterSequenceInt64: FfiConverterRustBuffer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if swift(>=5.8)
|
||||||
|
@_documentation(visibility: private)
|
||||||
|
#endif
|
||||||
|
fileprivate struct FfiConverterSequenceString: FfiConverterRustBuffer {
|
||||||
|
typealias SwiftType = [String]
|
||||||
|
|
||||||
|
public static func write(_ value: [String], into buf: inout [UInt8]) {
|
||||||
|
let len = Int32(value.count)
|
||||||
|
writeInt(&buf, len)
|
||||||
|
for item in value {
|
||||||
|
FfiConverterString.write(item, into: &buf)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [String] {
|
||||||
|
let len: Int32 = try readInt(&buf)
|
||||||
|
var seq = [String]()
|
||||||
|
seq.reserveCapacity(Int(len))
|
||||||
|
for _ in 0 ..< len {
|
||||||
|
seq.append(try FfiConverterString.read(from: &buf))
|
||||||
|
}
|
||||||
|
return seq
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if swift(>=5.8)
|
||||||
|
@_documentation(visibility: private)
|
||||||
|
#endif
|
||||||
|
fileprivate struct FfiConverterSequenceTypeBlockInfo: FfiConverterRustBuffer {
|
||||||
|
typealias SwiftType = [BlockInfo]
|
||||||
|
|
||||||
|
public static func write(_ value: [BlockInfo], into buf: inout [UInt8]) {
|
||||||
|
let len = Int32(value.count)
|
||||||
|
writeInt(&buf, len)
|
||||||
|
for item in value {
|
||||||
|
FfiConverterTypeBlockInfo.write(item, into: &buf)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [BlockInfo] {
|
||||||
|
let len: Int32 = try readInt(&buf)
|
||||||
|
var seq = [BlockInfo]()
|
||||||
|
seq.reserveCapacity(Int(len))
|
||||||
|
for _ in 0 ..< len {
|
||||||
|
seq.append(try FfiConverterTypeBlockInfo.read(from: &buf))
|
||||||
|
}
|
||||||
|
return seq
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#if swift(>=5.8)
|
#if swift(>=5.8)
|
||||||
@_documentation(visibility: private)
|
@_documentation(visibility: private)
|
||||||
#endif
|
#endif
|
||||||
@@ -1916,6 +2534,56 @@ fileprivate struct FfiConverterSequenceTypeListedBlob: FfiConverterRustBuffer {
|
|||||||
return seq
|
return seq
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if swift(>=5.8)
|
||||||
|
@_documentation(visibility: private)
|
||||||
|
#endif
|
||||||
|
fileprivate struct FfiConverterSequenceTypeMatchRange: FfiConverterRustBuffer {
|
||||||
|
typealias SwiftType = [MatchRange]
|
||||||
|
|
||||||
|
public static func write(_ value: [MatchRange], into buf: inout [UInt8]) {
|
||||||
|
let len = Int32(value.count)
|
||||||
|
writeInt(&buf, len)
|
||||||
|
for item in value {
|
||||||
|
FfiConverterTypeMatchRange.write(item, into: &buf)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [MatchRange] {
|
||||||
|
let len: Int32 = try readInt(&buf)
|
||||||
|
var seq = [MatchRange]()
|
||||||
|
seq.reserveCapacity(Int(len))
|
||||||
|
for _ in 0 ..< len {
|
||||||
|
seq.append(try FfiConverterTypeMatchRange.read(from: &buf))
|
||||||
|
}
|
||||||
|
return seq
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if swift(>=5.8)
|
||||||
|
@_documentation(visibility: private)
|
||||||
|
#endif
|
||||||
|
fileprivate struct FfiConverterSequenceTypeSearchHit: FfiConverterRustBuffer {
|
||||||
|
typealias SwiftType = [SearchHit]
|
||||||
|
|
||||||
|
public static func write(_ value: [SearchHit], into buf: inout [UInt8]) {
|
||||||
|
let len = Int32(value.count)
|
||||||
|
writeInt(&buf, len)
|
||||||
|
for item in value {
|
||||||
|
FfiConverterTypeSearchHit.write(item, into: &buf)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [SearchHit] {
|
||||||
|
let len: Int32 = try readInt(&buf)
|
||||||
|
var seq = [SearchHit]()
|
||||||
|
seq.reserveCapacity(Int(len))
|
||||||
|
for _ in 0 ..< len {
|
||||||
|
seq.append(try FfiConverterTypeSearchHit.read(from: &buf))
|
||||||
|
}
|
||||||
|
return seq
|
||||||
|
}
|
||||||
|
}
|
||||||
private let UNIFFI_RUST_FUTURE_POLL_READY: Int8 = 0
|
private let UNIFFI_RUST_FUTURE_POLL_READY: Int8 = 0
|
||||||
private let UNIFFI_RUST_FUTURE_POLL_MAYBE_READY: Int8 = 1
|
private let UNIFFI_RUST_FUTURE_POLL_MAYBE_READY: Int8 = 1
|
||||||
|
|
||||||
@@ -2004,6 +2672,9 @@ private let initializationResult: InitializationResult = {
|
|||||||
if (uniffi_affine_mobile_native_checksum_method_docstoragepool_connect() != 19047) {
|
if (uniffi_affine_mobile_native_checksum_method_docstoragepool_connect() != 19047) {
|
||||||
return InitializationResult.apiChecksumMismatch
|
return InitializationResult.apiChecksumMismatch
|
||||||
}
|
}
|
||||||
|
if (uniffi_affine_mobile_native_checksum_method_docstoragepool_crawl_doc_data() != 36347) {
|
||||||
|
return InitializationResult.apiChecksumMismatch
|
||||||
|
}
|
||||||
if (uniffi_affine_mobile_native_checksum_method_docstoragepool_delete_blob() != 53695) {
|
if (uniffi_affine_mobile_native_checksum_method_docstoragepool_delete_blob() != 53695) {
|
||||||
return InitializationResult.apiChecksumMismatch
|
return InitializationResult.apiChecksumMismatch
|
||||||
}
|
}
|
||||||
@@ -2013,6 +2684,27 @@ private let initializationResult: InitializationResult = {
|
|||||||
if (uniffi_affine_mobile_native_checksum_method_docstoragepool_disconnect() != 20410) {
|
if (uniffi_affine_mobile_native_checksum_method_docstoragepool_disconnect() != 20410) {
|
||||||
return InitializationResult.apiChecksumMismatch
|
return InitializationResult.apiChecksumMismatch
|
||||||
}
|
}
|
||||||
|
if (uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_add_document() != 37651) {
|
||||||
|
return InitializationResult.apiChecksumMismatch
|
||||||
|
}
|
||||||
|
if (uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_delete_document() != 47292) {
|
||||||
|
return InitializationResult.apiChecksumMismatch
|
||||||
|
}
|
||||||
|
if (uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_flush_index() != 9921) {
|
||||||
|
return InitializationResult.apiChecksumMismatch
|
||||||
|
}
|
||||||
|
if (uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_get_document() != 45953) {
|
||||||
|
return InitializationResult.apiChecksumMismatch
|
||||||
|
}
|
||||||
|
if (uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_get_matches() != 35972) {
|
||||||
|
return InitializationResult.apiChecksumMismatch
|
||||||
|
}
|
||||||
|
if (uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_index_version() != 44498) {
|
||||||
|
return InitializationResult.apiChecksumMismatch
|
||||||
|
}
|
||||||
|
if (uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_search() != 28341) {
|
||||||
|
return InitializationResult.apiChecksumMismatch
|
||||||
|
}
|
||||||
if (uniffi_affine_mobile_native_checksum_method_docstoragepool_get_blob() != 56927) {
|
if (uniffi_affine_mobile_native_checksum_method_docstoragepool_get_blob() != 56927) {
|
||||||
return InitializationResult.apiChecksumMismatch
|
return InitializationResult.apiChecksumMismatch
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -271,6 +271,11 @@ uint64_t uniffi_affine_mobile_native_fn_method_docstoragepool_clear_clocks(void*
|
|||||||
uint64_t uniffi_affine_mobile_native_fn_method_docstoragepool_connect(void*_Nonnull ptr, RustBuffer universal_id, RustBuffer path
|
uint64_t uniffi_affine_mobile_native_fn_method_docstoragepool_connect(void*_Nonnull ptr, RustBuffer universal_id, RustBuffer path
|
||||||
);
|
);
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_CRAWL_DOC_DATA
|
||||||
|
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_CRAWL_DOC_DATA
|
||||||
|
uint64_t uniffi_affine_mobile_native_fn_method_docstoragepool_crawl_doc_data(void*_Nonnull ptr, RustBuffer universal_id, RustBuffer doc_id
|
||||||
|
);
|
||||||
|
#endif
|
||||||
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_DELETE_BLOB
|
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_DELETE_BLOB
|
||||||
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_DELETE_BLOB
|
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_DELETE_BLOB
|
||||||
uint64_t uniffi_affine_mobile_native_fn_method_docstoragepool_delete_blob(void*_Nonnull ptr, RustBuffer universal_id, RustBuffer key, int8_t permanently
|
uint64_t uniffi_affine_mobile_native_fn_method_docstoragepool_delete_blob(void*_Nonnull ptr, RustBuffer universal_id, RustBuffer key, int8_t permanently
|
||||||
@@ -286,6 +291,41 @@ uint64_t uniffi_affine_mobile_native_fn_method_docstoragepool_delete_doc(void*_N
|
|||||||
uint64_t uniffi_affine_mobile_native_fn_method_docstoragepool_disconnect(void*_Nonnull ptr, RustBuffer universal_id
|
uint64_t uniffi_affine_mobile_native_fn_method_docstoragepool_disconnect(void*_Nonnull ptr, RustBuffer universal_id
|
||||||
);
|
);
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_FTS_ADD_DOCUMENT
|
||||||
|
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_FTS_ADD_DOCUMENT
|
||||||
|
uint64_t uniffi_affine_mobile_native_fn_method_docstoragepool_fts_add_document(void*_Nonnull ptr, RustBuffer universal_id, RustBuffer index_name, RustBuffer doc_id, RustBuffer text, int8_t index
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_FTS_DELETE_DOCUMENT
|
||||||
|
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_FTS_DELETE_DOCUMENT
|
||||||
|
uint64_t uniffi_affine_mobile_native_fn_method_docstoragepool_fts_delete_document(void*_Nonnull ptr, RustBuffer universal_id, RustBuffer index_name, RustBuffer doc_id
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_FTS_FLUSH_INDEX
|
||||||
|
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_FTS_FLUSH_INDEX
|
||||||
|
uint64_t uniffi_affine_mobile_native_fn_method_docstoragepool_fts_flush_index(void*_Nonnull ptr, RustBuffer universal_id
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_FTS_GET_DOCUMENT
|
||||||
|
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_FTS_GET_DOCUMENT
|
||||||
|
uint64_t uniffi_affine_mobile_native_fn_method_docstoragepool_fts_get_document(void*_Nonnull ptr, RustBuffer universal_id, RustBuffer index_name, RustBuffer doc_id
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_FTS_GET_MATCHES
|
||||||
|
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_FTS_GET_MATCHES
|
||||||
|
uint64_t uniffi_affine_mobile_native_fn_method_docstoragepool_fts_get_matches(void*_Nonnull ptr, RustBuffer universal_id, RustBuffer index_name, RustBuffer doc_id, RustBuffer query
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_FTS_INDEX_VERSION
|
||||||
|
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_FTS_INDEX_VERSION
|
||||||
|
uint64_t uniffi_affine_mobile_native_fn_method_docstoragepool_fts_index_version(void*_Nonnull ptr
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_FTS_SEARCH
|
||||||
|
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_FTS_SEARCH
|
||||||
|
uint64_t uniffi_affine_mobile_native_fn_method_docstoragepool_fts_search(void*_Nonnull ptr, RustBuffer universal_id, RustBuffer index_name, RustBuffer query
|
||||||
|
);
|
||||||
|
#endif
|
||||||
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_GET_BLOB
|
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_GET_BLOB
|
||||||
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_GET_BLOB
|
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_FN_METHOD_DOCSTORAGEPOOL_GET_BLOB
|
||||||
uint64_t uniffi_affine_mobile_native_fn_method_docstoragepool_get_blob(void*_Nonnull ptr, RustBuffer universal_id, RustBuffer key
|
uint64_t uniffi_affine_mobile_native_fn_method_docstoragepool_get_blob(void*_Nonnull ptr, RustBuffer universal_id, RustBuffer key
|
||||||
@@ -714,6 +754,12 @@ uint16_t uniffi_affine_mobile_native_checksum_method_docstoragepool_clear_clocks
|
|||||||
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_CONNECT
|
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_CONNECT
|
||||||
uint16_t uniffi_affine_mobile_native_checksum_method_docstoragepool_connect(void
|
uint16_t uniffi_affine_mobile_native_checksum_method_docstoragepool_connect(void
|
||||||
|
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_CRAWL_DOC_DATA
|
||||||
|
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_CRAWL_DOC_DATA
|
||||||
|
uint16_t uniffi_affine_mobile_native_checksum_method_docstoragepool_crawl_doc_data(void
|
||||||
|
|
||||||
);
|
);
|
||||||
#endif
|
#endif
|
||||||
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_DELETE_BLOB
|
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_DELETE_BLOB
|
||||||
@@ -732,6 +778,48 @@ uint16_t uniffi_affine_mobile_native_checksum_method_docstoragepool_delete_doc(v
|
|||||||
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_DISCONNECT
|
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_DISCONNECT
|
||||||
uint16_t uniffi_affine_mobile_native_checksum_method_docstoragepool_disconnect(void
|
uint16_t uniffi_affine_mobile_native_checksum_method_docstoragepool_disconnect(void
|
||||||
|
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_FTS_ADD_DOCUMENT
|
||||||
|
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_FTS_ADD_DOCUMENT
|
||||||
|
uint16_t uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_add_document(void
|
||||||
|
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_FTS_DELETE_DOCUMENT
|
||||||
|
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_FTS_DELETE_DOCUMENT
|
||||||
|
uint16_t uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_delete_document(void
|
||||||
|
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_FTS_FLUSH_INDEX
|
||||||
|
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_FTS_FLUSH_INDEX
|
||||||
|
uint16_t uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_flush_index(void
|
||||||
|
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_FTS_GET_DOCUMENT
|
||||||
|
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_FTS_GET_DOCUMENT
|
||||||
|
uint16_t uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_get_document(void
|
||||||
|
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_FTS_GET_MATCHES
|
||||||
|
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_FTS_GET_MATCHES
|
||||||
|
uint16_t uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_get_matches(void
|
||||||
|
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_FTS_INDEX_VERSION
|
||||||
|
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_FTS_INDEX_VERSION
|
||||||
|
uint16_t uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_index_version(void
|
||||||
|
|
||||||
|
);
|
||||||
|
#endif
|
||||||
|
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_FTS_SEARCH
|
||||||
|
#define UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_FTS_SEARCH
|
||||||
|
uint16_t uniffi_affine_mobile_native_checksum_method_docstoragepool_fts_search(void
|
||||||
|
|
||||||
);
|
);
|
||||||
#endif
|
#endif
|
||||||
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_GET_BLOB
|
#ifndef UNIFFI_FFIDEF_UNIFFI_AFFINE_MOBILE_NATIVE_CHECKSUM_METHOD_DOCSTORAGEPOOL_GET_BLOB
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
// @generated
|
||||||
|
// This file was automatically generated and should not be edited.
|
||||||
|
|
||||||
|
@_exported import ApolloAPI
|
||||||
|
|
||||||
|
public class AbortBlobUploadMutation: GraphQLMutation {
|
||||||
|
public static let operationName: String = "abortBlobUpload"
|
||||||
|
public static let operationDocument: ApolloAPI.OperationDocument = .init(
|
||||||
|
definition: .init(
|
||||||
|
#"mutation abortBlobUpload($workspaceId: String!, $key: String!, $uploadId: String!) { abortBlobUpload(workspaceId: $workspaceId, key: $key, uploadId: $uploadId) }"#
|
||||||
|
))
|
||||||
|
|
||||||
|
public var workspaceId: String
|
||||||
|
public var key: String
|
||||||
|
public var uploadId: String
|
||||||
|
|
||||||
|
public init(
|
||||||
|
workspaceId: String,
|
||||||
|
key: String,
|
||||||
|
uploadId: String
|
||||||
|
) {
|
||||||
|
self.workspaceId = workspaceId
|
||||||
|
self.key = key
|
||||||
|
self.uploadId = uploadId
|
||||||
|
}
|
||||||
|
|
||||||
|
public var __variables: Variables? { [
|
||||||
|
"workspaceId": workspaceId,
|
||||||
|
"key": key,
|
||||||
|
"uploadId": uploadId
|
||||||
|
] }
|
||||||
|
|
||||||
|
public struct Data: AffineGraphQL.SelectionSet {
|
||||||
|
public let __data: DataDict
|
||||||
|
public init(_dataDict: DataDict) { __data = _dataDict }
|
||||||
|
|
||||||
|
public static var __parentType: any ApolloAPI.ParentType { AffineGraphQL.Objects.Mutation }
|
||||||
|
public static var __selections: [ApolloAPI.Selection] { [
|
||||||
|
.field("abortBlobUpload", Bool.self, arguments: [
|
||||||
|
"workspaceId": .variable("workspaceId"),
|
||||||
|
"key": .variable("key"),
|
||||||
|
"uploadId": .variable("uploadId")
|
||||||
|
]),
|
||||||
|
] }
|
||||||
|
|
||||||
|
public var abortBlobUpload: Bool { __data["abortBlobUpload"] }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
// @generated
|
||||||
|
// This file was automatically generated and should not be edited.
|
||||||
|
|
||||||
|
@_exported import ApolloAPI
|
||||||
|
|
||||||
|
public class CompleteBlobUploadMutation: GraphQLMutation {
|
||||||
|
public static let operationName: String = "completeBlobUpload"
|
||||||
|
public static let operationDocument: ApolloAPI.OperationDocument = .init(
|
||||||
|
definition: .init(
|
||||||
|
#"mutation completeBlobUpload($workspaceId: String!, $key: String!, $uploadId: String, $parts: [BlobUploadPartInput!]) { completeBlobUpload( workspaceId: $workspaceId key: $key uploadId: $uploadId parts: $parts ) }"#
|
||||||
|
))
|
||||||
|
|
||||||
|
public var workspaceId: String
|
||||||
|
public var key: String
|
||||||
|
public var uploadId: GraphQLNullable<String>
|
||||||
|
public var parts: GraphQLNullable<[BlobUploadPartInput]>
|
||||||
|
|
||||||
|
public init(
|
||||||
|
workspaceId: String,
|
||||||
|
key: String,
|
||||||
|
uploadId: GraphQLNullable<String>,
|
||||||
|
parts: GraphQLNullable<[BlobUploadPartInput]>
|
||||||
|
) {
|
||||||
|
self.workspaceId = workspaceId
|
||||||
|
self.key = key
|
||||||
|
self.uploadId = uploadId
|
||||||
|
self.parts = parts
|
||||||
|
}
|
||||||
|
|
||||||
|
public var __variables: Variables? { [
|
||||||
|
"workspaceId": workspaceId,
|
||||||
|
"key": key,
|
||||||
|
"uploadId": uploadId,
|
||||||
|
"parts": parts
|
||||||
|
] }
|
||||||
|
|
||||||
|
public struct Data: AffineGraphQL.SelectionSet {
|
||||||
|
public let __data: DataDict
|
||||||
|
public init(_dataDict: DataDict) { __data = _dataDict }
|
||||||
|
|
||||||
|
public static var __parentType: any ApolloAPI.ParentType { AffineGraphQL.Objects.Mutation }
|
||||||
|
public static var __selections: [ApolloAPI.Selection] { [
|
||||||
|
.field("completeBlobUpload", String.self, arguments: [
|
||||||
|
"workspaceId": .variable("workspaceId"),
|
||||||
|
"key": .variable("key"),
|
||||||
|
"uploadId": .variable("uploadId"),
|
||||||
|
"parts": .variable("parts")
|
||||||
|
]),
|
||||||
|
] }
|
||||||
|
|
||||||
|
public var completeBlobUpload: String { __data["completeBlobUpload"] }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
// @generated
|
||||||
|
// This file was automatically generated and should not be edited.
|
||||||
|
|
||||||
|
@_exported import ApolloAPI
|
||||||
|
|
||||||
|
public class CreateBlobUploadMutation: GraphQLMutation {
|
||||||
|
public static let operationName: String = "createBlobUpload"
|
||||||
|
public static let operationDocument: ApolloAPI.OperationDocument = .init(
|
||||||
|
definition: .init(
|
||||||
|
#"mutation createBlobUpload($workspaceId: String!, $key: String!, $size: Int!, $mime: String!) { createBlobUpload(workspaceId: $workspaceId, key: $key, size: $size, mime: $mime) { __typename method blobKey alreadyUploaded uploadUrl headers expiresAt uploadId partSize uploadedParts { __typename partNumber etag } } }"#
|
||||||
|
))
|
||||||
|
|
||||||
|
public var workspaceId: String
|
||||||
|
public var key: String
|
||||||
|
public var size: Int
|
||||||
|
public var mime: String
|
||||||
|
|
||||||
|
public init(
|
||||||
|
workspaceId: String,
|
||||||
|
key: String,
|
||||||
|
size: Int,
|
||||||
|
mime: String
|
||||||
|
) {
|
||||||
|
self.workspaceId = workspaceId
|
||||||
|
self.key = key
|
||||||
|
self.size = size
|
||||||
|
self.mime = mime
|
||||||
|
}
|
||||||
|
|
||||||
|
public var __variables: Variables? { [
|
||||||
|
"workspaceId": workspaceId,
|
||||||
|
"key": key,
|
||||||
|
"size": size,
|
||||||
|
"mime": mime
|
||||||
|
] }
|
||||||
|
|
||||||
|
public struct Data: AffineGraphQL.SelectionSet {
|
||||||
|
public let __data: DataDict
|
||||||
|
public init(_dataDict: DataDict) { __data = _dataDict }
|
||||||
|
|
||||||
|
public static var __parentType: any ApolloAPI.ParentType { AffineGraphQL.Objects.Mutation }
|
||||||
|
public static var __selections: [ApolloAPI.Selection] { [
|
||||||
|
.field("createBlobUpload", CreateBlobUpload.self, arguments: [
|
||||||
|
"workspaceId": .variable("workspaceId"),
|
||||||
|
"key": .variable("key"),
|
||||||
|
"size": .variable("size"),
|
||||||
|
"mime": .variable("mime")
|
||||||
|
]),
|
||||||
|
] }
|
||||||
|
|
||||||
|
public var createBlobUpload: CreateBlobUpload { __data["createBlobUpload"] }
|
||||||
|
|
||||||
|
/// CreateBlobUpload
|
||||||
|
///
|
||||||
|
/// Parent Type: `BlobUploadInit`
|
||||||
|
public struct CreateBlobUpload: AffineGraphQL.SelectionSet {
|
||||||
|
public let __data: DataDict
|
||||||
|
public init(_dataDict: DataDict) { __data = _dataDict }
|
||||||
|
|
||||||
|
public static var __parentType: any ApolloAPI.ParentType { AffineGraphQL.Objects.BlobUploadInit }
|
||||||
|
public static var __selections: [ApolloAPI.Selection] { [
|
||||||
|
.field("__typename", String.self),
|
||||||
|
.field("method", GraphQLEnum<AffineGraphQL.BlobUploadMethod>.self),
|
||||||
|
.field("blobKey", String.self),
|
||||||
|
.field("alreadyUploaded", Bool?.self),
|
||||||
|
.field("uploadUrl", String?.self),
|
||||||
|
.field("headers", AffineGraphQL.JSONObject?.self),
|
||||||
|
.field("expiresAt", AffineGraphQL.DateTime?.self),
|
||||||
|
.field("uploadId", String?.self),
|
||||||
|
.field("partSize", Int?.self),
|
||||||
|
.field("uploadedParts", [UploadedPart]?.self),
|
||||||
|
] }
|
||||||
|
|
||||||
|
public var method: GraphQLEnum<AffineGraphQL.BlobUploadMethod> { __data["method"] }
|
||||||
|
public var blobKey: String { __data["blobKey"] }
|
||||||
|
public var alreadyUploaded: Bool? { __data["alreadyUploaded"] }
|
||||||
|
public var uploadUrl: String? { __data["uploadUrl"] }
|
||||||
|
public var headers: AffineGraphQL.JSONObject? { __data["headers"] }
|
||||||
|
public var expiresAt: AffineGraphQL.DateTime? { __data["expiresAt"] }
|
||||||
|
public var uploadId: String? { __data["uploadId"] }
|
||||||
|
public var partSize: Int? { __data["partSize"] }
|
||||||
|
public var uploadedParts: [UploadedPart]? { __data["uploadedParts"] }
|
||||||
|
|
||||||
|
/// CreateBlobUpload.UploadedPart
|
||||||
|
///
|
||||||
|
/// Parent Type: `BlobUploadedPart`
|
||||||
|
public struct UploadedPart: AffineGraphQL.SelectionSet {
|
||||||
|
public let __data: DataDict
|
||||||
|
public init(_dataDict: DataDict) { __data = _dataDict }
|
||||||
|
|
||||||
|
public static var __parentType: any ApolloAPI.ParentType { AffineGraphQL.Objects.BlobUploadedPart }
|
||||||
|
public static var __selections: [ApolloAPI.Selection] { [
|
||||||
|
.field("__typename", String.self),
|
||||||
|
.field("partNumber", Int.self),
|
||||||
|
.field("etag", String.self),
|
||||||
|
] }
|
||||||
|
|
||||||
|
public var partNumber: Int { __data["partNumber"] }
|
||||||
|
public var etag: String { __data["etag"] }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
// @generated
|
||||||
|
// This file was automatically generated and should not be edited.
|
||||||
|
|
||||||
|
@_exported import ApolloAPI
|
||||||
|
|
||||||
|
public class GetBlobUploadPartUrlMutation: GraphQLMutation {
|
||||||
|
public static let operationName: String = "getBlobUploadPartUrl"
|
||||||
|
public static let operationDocument: ApolloAPI.OperationDocument = .init(
|
||||||
|
definition: .init(
|
||||||
|
#"mutation getBlobUploadPartUrl($workspaceId: String!, $key: String!, $uploadId: String!, $partNumber: Int!) { getBlobUploadPartUrl( workspaceId: $workspaceId key: $key uploadId: $uploadId partNumber: $partNumber ) { __typename uploadUrl headers expiresAt } }"#
|
||||||
|
))
|
||||||
|
|
||||||
|
public var workspaceId: String
|
||||||
|
public var key: String
|
||||||
|
public var uploadId: String
|
||||||
|
public var partNumber: Int
|
||||||
|
|
||||||
|
public init(
|
||||||
|
workspaceId: String,
|
||||||
|
key: String,
|
||||||
|
uploadId: String,
|
||||||
|
partNumber: Int
|
||||||
|
) {
|
||||||
|
self.workspaceId = workspaceId
|
||||||
|
self.key = key
|
||||||
|
self.uploadId = uploadId
|
||||||
|
self.partNumber = partNumber
|
||||||
|
}
|
||||||
|
|
||||||
|
public var __variables: Variables? { [
|
||||||
|
"workspaceId": workspaceId,
|
||||||
|
"key": key,
|
||||||
|
"uploadId": uploadId,
|
||||||
|
"partNumber": partNumber
|
||||||
|
] }
|
||||||
|
|
||||||
|
public struct Data: AffineGraphQL.SelectionSet {
|
||||||
|
public let __data: DataDict
|
||||||
|
public init(_dataDict: DataDict) { __data = _dataDict }
|
||||||
|
|
||||||
|
public static var __parentType: any ApolloAPI.ParentType { AffineGraphQL.Objects.Mutation }
|
||||||
|
public static var __selections: [ApolloAPI.Selection] { [
|
||||||
|
.field("getBlobUploadPartUrl", GetBlobUploadPartUrl.self, arguments: [
|
||||||
|
"workspaceId": .variable("workspaceId"),
|
||||||
|
"key": .variable("key"),
|
||||||
|
"uploadId": .variable("uploadId"),
|
||||||
|
"partNumber": .variable("partNumber")
|
||||||
|
]),
|
||||||
|
] }
|
||||||
|
|
||||||
|
public var getBlobUploadPartUrl: GetBlobUploadPartUrl { __data["getBlobUploadPartUrl"] }
|
||||||
|
|
||||||
|
/// GetBlobUploadPartUrl
|
||||||
|
///
|
||||||
|
/// Parent Type: `BlobUploadPart`
|
||||||
|
public struct GetBlobUploadPartUrl: AffineGraphQL.SelectionSet {
|
||||||
|
public let __data: DataDict
|
||||||
|
public init(_dataDict: DataDict) { __data = _dataDict }
|
||||||
|
|
||||||
|
public static var __parentType: any ApolloAPI.ParentType { AffineGraphQL.Objects.BlobUploadPart }
|
||||||
|
public static var __selections: [ApolloAPI.Selection] { [
|
||||||
|
.field("__typename", String.self),
|
||||||
|
.field("uploadUrl", String.self),
|
||||||
|
.field("headers", AffineGraphQL.JSONObject?.self),
|
||||||
|
.field("expiresAt", AffineGraphQL.DateTime?.self),
|
||||||
|
] }
|
||||||
|
|
||||||
|
public var uploadUrl: String { __data["uploadUrl"] }
|
||||||
|
public var headers: AffineGraphQL.JSONObject? { __data["headers"] }
|
||||||
|
public var expiresAt: AffineGraphQL.DateTime? { __data["expiresAt"] }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
// @generated
|
||||||
|
// This file was automatically generated and should not be edited.
|
||||||
|
|
||||||
|
import ApolloAPI
|
||||||
|
|
||||||
|
/// Blob upload method
|
||||||
|
public enum BlobUploadMethod: String, EnumType {
|
||||||
|
case graphql = "GRAPHQL"
|
||||||
|
case multipart = "MULTIPART"
|
||||||
|
case presigned = "PRESIGNED"
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
// @generated
|
||||||
|
// This file was automatically generated and should not be edited.
|
||||||
|
|
||||||
|
import ApolloAPI
|
||||||
|
|
||||||
|
public struct BlobUploadPartInput: InputObject {
|
||||||
|
public private(set) var __data: InputDict
|
||||||
|
|
||||||
|
public init(_ data: InputDict) {
|
||||||
|
__data = data
|
||||||
|
}
|
||||||
|
|
||||||
|
public init(
|
||||||
|
etag: String,
|
||||||
|
partNumber: Int
|
||||||
|
) {
|
||||||
|
__data = InputDict([
|
||||||
|
"etag": etag,
|
||||||
|
"partNumber": partNumber
|
||||||
|
])
|
||||||
|
}
|
||||||
|
|
||||||
|
public var etag: String {
|
||||||
|
get { __data["etag"] }
|
||||||
|
set { __data["etag"] = newValue }
|
||||||
|
}
|
||||||
|
|
||||||
|
public var partNumber: Int {
|
||||||
|
get { __data["partNumber"] }
|
||||||
|
set { __data["partNumber"] = newValue }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
// @generated
|
||||||
|
// This file was automatically generated and should not be edited.
|
||||||
|
|
||||||
|
import ApolloAPI
|
||||||
|
|
||||||
|
public extension Objects {
|
||||||
|
static let BlobUploadInit = ApolloAPI.Object(
|
||||||
|
typename: "BlobUploadInit",
|
||||||
|
implementedInterfaces: [],
|
||||||
|
keyFields: nil
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
// @generated
|
||||||
|
// This file was automatically generated and should not be edited.
|
||||||
|
|
||||||
|
import ApolloAPI
|
||||||
|
|
||||||
|
public extension Objects {
|
||||||
|
static let BlobUploadPart = ApolloAPI.Object(
|
||||||
|
typename: "BlobUploadPart",
|
||||||
|
implementedInterfaces: [],
|
||||||
|
keyFields: nil
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
// @generated
|
||||||
|
// This file was automatically generated and should not be edited.
|
||||||
|
|
||||||
|
import ApolloAPI
|
||||||
|
|
||||||
|
public extension Objects {
|
||||||
|
static let BlobUploadedPart = ApolloAPI.Object(
|
||||||
|
typename: "BlobUploadedPart",
|
||||||
|
implementedInterfaces: [],
|
||||||
|
keyFields: nil
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -24,6 +24,9 @@ public enum SchemaMetadata: ApolloAPI.SchemaMetadata {
|
|||||||
case "AggregateBucketObjectType": return AffineGraphQL.Objects.AggregateBucketObjectType
|
case "AggregateBucketObjectType": return AffineGraphQL.Objects.AggregateBucketObjectType
|
||||||
case "AggregateResultObjectType": return AffineGraphQL.Objects.AggregateResultObjectType
|
case "AggregateResultObjectType": return AffineGraphQL.Objects.AggregateResultObjectType
|
||||||
case "AppConfigValidateResult": return AffineGraphQL.Objects.AppConfigValidateResult
|
case "AppConfigValidateResult": return AffineGraphQL.Objects.AppConfigValidateResult
|
||||||
|
case "BlobUploadInit": return AffineGraphQL.Objects.BlobUploadInit
|
||||||
|
case "BlobUploadPart": return AffineGraphQL.Objects.BlobUploadPart
|
||||||
|
case "BlobUploadedPart": return AffineGraphQL.Objects.BlobUploadedPart
|
||||||
case "ChatMessage": return AffineGraphQL.Objects.ChatMessage
|
case "ChatMessage": return AffineGraphQL.Objects.ChatMessage
|
||||||
case "CommentChangeObjectType": return AffineGraphQL.Objects.CommentChangeObjectType
|
case "CommentChangeObjectType": return AffineGraphQL.Objects.CommentChangeObjectType
|
||||||
case "CommentChangeObjectTypeEdge": return AffineGraphQL.Objects.CommentChangeObjectTypeEdge
|
case "CommentChangeObjectTypeEdge": return AffineGraphQL.Objects.CommentChangeObjectTypeEdge
|
||||||
|
|||||||
@@ -45,13 +45,13 @@ EXTERNAL SOURCES:
|
|||||||
:path: "../../../../../node_modules/capacitor-plugin-app-tracking-transparency"
|
:path: "../../../../../node_modules/capacitor-plugin-app-tracking-transparency"
|
||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
Capacitor: 03bc7cbdde6a629a8b910a9d7d78c3cc7ed09ea7
|
Capacitor: 106e7a4205f4618d582b886a975657c61179138d
|
||||||
CapacitorApp: febecbb9582cb353aed037e18ec765141f880fe9
|
CapacitorApp: d63334c052278caf5d81585d80b21905c6f93f39
|
||||||
CapacitorBrowser: 6299776d496e968505464884d565992faa20444a
|
CapacitorBrowser: 081852cf532acf77b9d2953f3a88fe5b9711fb06
|
||||||
CapacitorCordova: 5967b9ba03915ef1d585469d6e31f31dc49be96f
|
CapacitorCordova: 5967b9ba03915ef1d585469d6e31f31dc49be96f
|
||||||
CapacitorHaptics: 1f1e17041f435d8ead9ff2a34edd592c6aa6a8d6
|
CapacitorHaptics: 70e47470fa1a6bd6338cd102552e3846b7f9a1b3
|
||||||
CapacitorKeyboard: 09fd91dcde4f8a37313e7f11bde553ad1ed52036
|
CapacitorKeyboard: 969647d0ca2e5c737d7300088e2517aa832434e2
|
||||||
CapacitorPluginAppTrackingTransparency: 92ae9c1cfb5cf477753db9269689332a686f675a
|
CapacitorPluginAppTrackingTransparency: 2a2792623a5a72795f2e8f9ab3f1147573732fd8
|
||||||
CryptoSwift: 967f37cea5a3294d9cce358f78861652155be483
|
CryptoSwift: 967f37cea5a3294d9cce358f78861652155be483
|
||||||
|
|
||||||
PODFILE CHECKSUM: 2c1e4be82121f2d9724ecf7e31dd14e165aeb082
|
PODFILE CHECKSUM: 2c1e4be82121f2d9724ecf7e31dd14e165aeb082
|
||||||
|
|||||||
@@ -171,7 +171,9 @@ export interface NbStorePlugin {
|
|||||||
id: string;
|
id: string;
|
||||||
indexName: string;
|
indexName: string;
|
||||||
query: string;
|
query: string;
|
||||||
}) => Promise<{ id: string; score: number; terms: Array<string> }[]>;
|
}) => Promise<{
|
||||||
|
results: { id: string; score: number; terms: Array<string> }[];
|
||||||
|
}>;
|
||||||
ftsGetDocument: (options: {
|
ftsGetDocument: (options: {
|
||||||
id: string;
|
id: string;
|
||||||
indexName: string;
|
indexName: string;
|
||||||
@@ -182,7 +184,7 @@ export interface NbStorePlugin {
|
|||||||
indexName: string;
|
indexName: string;
|
||||||
docId: string;
|
docId: string;
|
||||||
query: string;
|
query: string;
|
||||||
}) => Promise<Array<{ start: number; end: number }>>;
|
}) => Promise<{ matches: { start: number; end: number }[] }>;
|
||||||
ftsFlushIndex: (options: { id: string }) => Promise<void>;
|
ftsFlushIndex: (options: { id: string }) => Promise<void>;
|
||||||
ftsIndexVersion: () => Promise<number>;
|
ftsIndexVersion: () => Promise<{ indexVersion: number }>;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -374,11 +374,12 @@ export const NbStoreNativeDBApis: NativeDBApis = {
|
|||||||
indexName: string,
|
indexName: string,
|
||||||
query: string
|
query: string
|
||||||
): Promise<{ id: string; score: number; terms: Array<string> }[]> {
|
): Promise<{ id: string; score: number; terms: Array<string> }[]> {
|
||||||
return await NbStore.ftsSearch({
|
const { results } = await NbStore.ftsSearch({
|
||||||
id,
|
id,
|
||||||
indexName,
|
indexName,
|
||||||
query,
|
query,
|
||||||
});
|
});
|
||||||
|
return results ?? [];
|
||||||
},
|
},
|
||||||
ftsGetDocument: async function (
|
ftsGetDocument: async function (
|
||||||
id: string,
|
id: string,
|
||||||
@@ -398,12 +399,13 @@ export const NbStoreNativeDBApis: NativeDBApis = {
|
|||||||
docId: string,
|
docId: string,
|
||||||
query: string
|
query: string
|
||||||
): Promise<{ start: number; end: number }[]> {
|
): Promise<{ start: number; end: number }[]> {
|
||||||
return await NbStore.ftsGetMatches({
|
const { matches } = await NbStore.ftsGetMatches({
|
||||||
id,
|
id,
|
||||||
indexName,
|
indexName,
|
||||||
docId,
|
docId,
|
||||||
query,
|
query,
|
||||||
});
|
});
|
||||||
|
return matches ?? [];
|
||||||
},
|
},
|
||||||
ftsFlushIndex: async function (id: string): Promise<void> {
|
ftsFlushIndex: async function (id: string): Promise<void> {
|
||||||
await NbStore.ftsFlushIndex({
|
await NbStore.ftsFlushIndex({
|
||||||
@@ -411,6 +413,6 @@ export const NbStoreNativeDBApis: NativeDBApis = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
ftsIndexVersion: function (): Promise<number> {
|
ftsIndexVersion: function (): Promise<number> {
|
||||||
return NbStore.ftsIndexVersion();
|
return NbStore.ftsIndexVersion().then(res => res.indexVersion);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -132,7 +132,8 @@ class CloudWorkspaceFlavourProvider implements WorkspaceFlavourProvider {
|
|||||||
BUILD_CONFIG.isElectron || BUILD_CONFIG.isIOS || BUILD_CONFIG.isAndroid
|
BUILD_CONFIG.isElectron || BUILD_CONFIG.isIOS || BUILD_CONFIG.isAndroid
|
||||||
? SqliteBlobSyncStorage
|
? SqliteBlobSyncStorage
|
||||||
: IndexedDBBlobSyncStorage;
|
: IndexedDBBlobSyncStorage;
|
||||||
IndexerStorageType = BUILD_CONFIG.isElectron
|
IndexerStorageType =
|
||||||
|
BUILD_CONFIG.isElectron || BUILD_CONFIG.isIOS || BUILD_CONFIG.isAndroid
|
||||||
? SqliteIndexerStorage
|
? SqliteIndexerStorage
|
||||||
: IndexedDBIndexerStorage;
|
: IndexedDBIndexerStorage;
|
||||||
|
|
||||||
|
|||||||
@@ -109,7 +109,8 @@ class LocalWorkspaceFlavourProvider implements WorkspaceFlavourProvider {
|
|||||||
BUILD_CONFIG.isElectron || BUILD_CONFIG.isIOS || BUILD_CONFIG.isAndroid
|
BUILD_CONFIG.isElectron || BUILD_CONFIG.isIOS || BUILD_CONFIG.isAndroid
|
||||||
? SqliteBlobSyncStorage
|
? SqliteBlobSyncStorage
|
||||||
: IndexedDBBlobSyncStorage;
|
: IndexedDBBlobSyncStorage;
|
||||||
IndexerStorageType = BUILD_CONFIG.isElectron
|
IndexerStorageType =
|
||||||
|
BUILD_CONFIG.isElectron || BUILD_CONFIG.isIOS || BUILD_CONFIG.isAndroid
|
||||||
? SqliteIndexerStorage
|
? SqliteIndexerStorage
|
||||||
: IndexedDBIndexerStorage;
|
: IndexedDBIndexerStorage;
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
use affine_common::hashcash::Stamp;
|
use affine_common::hashcash::Stamp;
|
||||||
use affine_nbstore::pool::SqliteDocStoragePool;
|
use affine_nbstore::{pool::SqliteDocStoragePool, Data};
|
||||||
|
|
||||||
#[derive(uniffi::Error, thiserror::Error, Debug)]
|
#[derive(uniffi::Error, thiserror::Error, Debug)]
|
||||||
pub enum UniffiError {
|
pub enum UniffiError {
|
||||||
@@ -50,9 +50,11 @@ impl TryFrom<DocRecord> for affine_nbstore::DocRecord {
|
|||||||
fn try_from(record: DocRecord) -> Result<Self> {
|
fn try_from(record: DocRecord) -> Result<Self> {
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
doc_id: record.doc_id,
|
doc_id: record.doc_id,
|
||||||
bin: base64_simd::STANDARD
|
bin: Into::<Data>::into(
|
||||||
|
base64_simd::STANDARD
|
||||||
.decode_to_vec(record.bin)
|
.decode_to_vec(record.bin)
|
||||||
.map_err(|e| UniffiError::Base64DecodingError(e.to_string()))?,
|
.map_err(|e| UniffiError::Base64DecodingError(e.to_string()))?,
|
||||||
|
),
|
||||||
timestamp: chrono::DateTime::<chrono::Utc>::from_timestamp_millis(record.timestamp)
|
timestamp: chrono::DateTime::<chrono::Utc>::from_timestamp_millis(record.timestamp)
|
||||||
.ok_or(UniffiError::TimestampDecodingError)?
|
.ok_or(UniffiError::TimestampDecodingError)?
|
||||||
.naive_utc(),
|
.naive_utc(),
|
||||||
@@ -156,9 +158,11 @@ impl TryFrom<SetBlob> for affine_nbstore::SetBlob {
|
|||||||
fn try_from(blob: SetBlob) -> Result<Self> {
|
fn try_from(blob: SetBlob) -> Result<Self> {
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
key: blob.key,
|
key: blob.key,
|
||||||
data: base64_simd::STANDARD
|
data: Into::<Data>::into(
|
||||||
|
base64_simd::STANDARD
|
||||||
.decode_to_vec(blob.data)
|
.decode_to_vec(blob.data)
|
||||||
.map_err(|e| UniffiError::Base64DecodingError(e.to_string()))?,
|
.map_err(|e| UniffiError::Base64DecodingError(e.to_string()))?,
|
||||||
|
),
|
||||||
mime: blob.mime,
|
mime: blob.mime,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -229,6 +233,38 @@ impl From<affine_nbstore::indexer::NativeCrawlResult> for CrawlResult {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(uniffi::Record)]
|
||||||
|
pub struct SearchHit {
|
||||||
|
pub id: String,
|
||||||
|
pub score: f64,
|
||||||
|
pub terms: Vec<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<affine_nbstore::indexer::NativeSearchHit> for SearchHit {
|
||||||
|
fn from(value: affine_nbstore::indexer::NativeSearchHit) -> Self {
|
||||||
|
Self {
|
||||||
|
id: value.id,
|
||||||
|
score: value.score,
|
||||||
|
terms: value.terms,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(uniffi::Record)]
|
||||||
|
pub struct MatchRange {
|
||||||
|
pub start: u32,
|
||||||
|
pub end: u32,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<affine_nbstore::indexer::NativeMatch> for MatchRange {
|
||||||
|
fn from(value: affine_nbstore::indexer::NativeMatch) -> Self {
|
||||||
|
Self {
|
||||||
|
start: value.start,
|
||||||
|
end: value.end,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(uniffi::Object)]
|
#[derive(uniffi::Object)]
|
||||||
pub struct DocStoragePool {
|
pub struct DocStoragePool {
|
||||||
inner: SqliteDocStoragePool,
|
inner: SqliteDocStoragePool,
|
||||||
@@ -699,4 +735,100 @@ impl DocStoragePool {
|
|||||||
.await?;
|
.await?;
|
||||||
Ok(result.into())
|
Ok(result.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn fts_add_document(
|
||||||
|
&self,
|
||||||
|
universal_id: String,
|
||||||
|
index_name: String,
|
||||||
|
doc_id: String,
|
||||||
|
text: String,
|
||||||
|
index: bool,
|
||||||
|
) -> Result<()> {
|
||||||
|
self
|
||||||
|
.inner
|
||||||
|
.get(universal_id)
|
||||||
|
.await?
|
||||||
|
.fts_add(&index_name, &doc_id, &text, index)
|
||||||
|
.await?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn fts_delete_document(
|
||||||
|
&self,
|
||||||
|
universal_id: String,
|
||||||
|
index_name: String,
|
||||||
|
doc_id: String,
|
||||||
|
) -> Result<()> {
|
||||||
|
self
|
||||||
|
.inner
|
||||||
|
.get(universal_id)
|
||||||
|
.await?
|
||||||
|
.fts_delete(&index_name, &doc_id)
|
||||||
|
.await?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn fts_get_document(
|
||||||
|
&self,
|
||||||
|
universal_id: String,
|
||||||
|
index_name: String,
|
||||||
|
doc_id: String,
|
||||||
|
) -> Result<Option<String>> {
|
||||||
|
Ok(
|
||||||
|
self
|
||||||
|
.inner
|
||||||
|
.get(universal_id)
|
||||||
|
.await?
|
||||||
|
.fts_get(&index_name, &doc_id)
|
||||||
|
.await?,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn fts_search(
|
||||||
|
&self,
|
||||||
|
universal_id: String,
|
||||||
|
index_name: String,
|
||||||
|
query: String,
|
||||||
|
) -> Result<Vec<SearchHit>> {
|
||||||
|
Ok(
|
||||||
|
self
|
||||||
|
.inner
|
||||||
|
.get(universal_id)
|
||||||
|
.await?
|
||||||
|
.fts_search(&index_name, &query)
|
||||||
|
.await?
|
||||||
|
.into_iter()
|
||||||
|
.map(Into::into)
|
||||||
|
.collect(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn fts_get_matches(
|
||||||
|
&self,
|
||||||
|
universal_id: String,
|
||||||
|
index_name: String,
|
||||||
|
doc_id: String,
|
||||||
|
query: String,
|
||||||
|
) -> Result<Vec<MatchRange>> {
|
||||||
|
Ok(
|
||||||
|
self
|
||||||
|
.inner
|
||||||
|
.get(universal_id)
|
||||||
|
.await?
|
||||||
|
.fts_get_matches(&index_name, &doc_id, &query)
|
||||||
|
.await?
|
||||||
|
.into_iter()
|
||||||
|
.map(Into::into)
|
||||||
|
.collect(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn fts_flush_index(&self, universal_id: String) -> Result<()> {
|
||||||
|
self.inner.get(universal_id).await?.flush_index().await?;
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn fts_index_version(&self) -> Result<u32> {
|
||||||
|
Ok(affine_nbstore::storage::SqliteDocStorage::index_version())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user