#ifndef VLDB_SQLITE_H
#define VLDB_SQLITE_H
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef enum VldbSqliteStatusCode {
VLDB_SQLITE_STATUS_SUCCESS = 0,
VLDB_SQLITE_STATUS_FAILURE = 1
} VldbSqliteStatusCode;
typedef enum VldbSqliteFfiTokenizerMode {
VLDB_SQLITE_TOKENIZER_NONE = 0,
VLDB_SQLITE_TOKENIZER_JIEBA = 1
} VldbSqliteFfiTokenizerMode;
typedef struct VldbSqliteRuntimeHandle VldbSqliteRuntimeHandle;
typedef struct VldbSqliteDatabaseHandle VldbSqliteDatabaseHandle;
typedef struct VldbSqliteTokenizeResultHandle VldbSqliteTokenizeResultHandle;
typedef struct VldbSqliteCustomWordListHandle VldbSqliteCustomWordListHandle;
typedef struct VldbSqliteSearchResultHandle VldbSqliteSearchResultHandle;
typedef struct VldbSqliteExecuteResultHandle VldbSqliteExecuteResultHandle;
typedef struct VldbSqliteQueryJsonResultHandle VldbSqliteQueryJsonResultHandle;
typedef struct VldbSqliteQueryStreamHandle VldbSqliteQueryStreamHandle;
typedef struct VldbSqliteDictionaryMutationResultPod {
uint8_t success;
uint64_t affected_rows;
} VldbSqliteDictionaryMutationResultPod;
typedef struct VldbSqliteEnsureFtsIndexResultPod {
uint8_t success;
uint32_t tokenizer_mode;
} VldbSqliteEnsureFtsIndexResultPod;
typedef struct VldbSqliteRebuildFtsIndexResultPod {
uint8_t success;
uint32_t tokenizer_mode;
uint64_t reindexed_rows;
} VldbSqliteRebuildFtsIndexResultPod;
typedef struct VldbSqliteFtsMutationResultPod {
uint8_t success;
uint64_t affected_rows;
} VldbSqliteFtsMutationResultPod;
typedef struct VldbSqliteByteView {
const uint8_t* data;
uint64_t len;
} VldbSqliteByteView;
typedef struct VldbSqliteByteBuffer {
uint8_t* data;
uint64_t len;
uint64_t cap;
} VldbSqliteByteBuffer;
typedef enum VldbSqliteFfiValueKind {
VLDB_SQLITE_VALUE_NULL = 0,
VLDB_SQLITE_VALUE_INT64 = 1,
VLDB_SQLITE_VALUE_FLOAT64 = 2,
VLDB_SQLITE_VALUE_STRING = 3,
VLDB_SQLITE_VALUE_BYTES = 4,
VLDB_SQLITE_VALUE_BOOL = 5
} VldbSqliteFfiValueKind;
typedef struct VldbSqliteFfiValue {
VldbSqliteFfiValueKind kind;
int64_t int64_value;
double float64_value;
const char* string_value;
VldbSqliteByteView bytes_value;
uint8_t bool_value;
} VldbSqliteFfiValue;
typedef struct VldbSqliteFfiValueSlice {
const VldbSqliteFfiValue* values;
uint64_t len;
} VldbSqliteFfiValueSlice;
char* vldb_sqlite_library_info_json(void);
VldbSqliteRuntimeHandle* vldb_sqlite_runtime_create_default(void);
void vldb_sqlite_runtime_destroy(VldbSqliteRuntimeHandle* handle);
VldbSqliteDatabaseHandle* vldb_sqlite_runtime_open_database(
VldbSqliteRuntimeHandle* runtime,
const char* db_path
);
uint8_t vldb_sqlite_runtime_close_database(
VldbSqliteRuntimeHandle* runtime,
const char* db_path
);
void vldb_sqlite_database_destroy(VldbSqliteDatabaseHandle* handle);
char* vldb_sqlite_database_db_path(VldbSqliteDatabaseHandle* handle);
void vldb_sqlite_string_free(char* value);
void vldb_sqlite_bytes_free(VldbSqliteByteBuffer buffer);
const char* vldb_sqlite_last_error_message(void);
void vldb_sqlite_clear_last_error(void);
uint8_t vldb_sqlite_json_is_null(const char* value);
VldbSqliteExecuteResultHandle* vldb_sqlite_database_execute_script(
VldbSqliteDatabaseHandle* handle,
const char* sql,
const VldbSqliteFfiValue* params,
uint64_t params_len,
const char* params_json
);
VldbSqliteExecuteResultHandle* vldb_sqlite_database_execute_batch(
VldbSqliteDatabaseHandle* handle,
const char* sql,
const VldbSqliteFfiValueSlice* items,
uint64_t items_len
);
VldbSqliteQueryJsonResultHandle* vldb_sqlite_database_query_json(
VldbSqliteDatabaseHandle* handle,
const char* sql,
const VldbSqliteFfiValue* params,
uint64_t params_len,
const char* params_json
);
VldbSqliteQueryStreamHandle* vldb_sqlite_database_query_stream(
VldbSqliteDatabaseHandle* handle,
const char* sql,
const VldbSqliteFfiValue* params,
uint64_t params_len,
const char* params_json,
uint64_t chunk_bytes
);
void vldb_sqlite_execute_result_destroy(VldbSqliteExecuteResultHandle* handle);
uint8_t vldb_sqlite_execute_result_success(VldbSqliteExecuteResultHandle* handle);
char* vldb_sqlite_execute_result_message(VldbSqliteExecuteResultHandle* handle);
int64_t vldb_sqlite_execute_result_rows_changed(VldbSqliteExecuteResultHandle* handle);
int64_t vldb_sqlite_execute_result_last_insert_rowid(VldbSqliteExecuteResultHandle* handle);
int64_t vldb_sqlite_execute_result_statements_executed(VldbSqliteExecuteResultHandle* handle);
void vldb_sqlite_query_json_result_destroy(VldbSqliteQueryJsonResultHandle* handle);
char* vldb_sqlite_query_json_result_json_data(VldbSqliteQueryJsonResultHandle* handle);
uint64_t vldb_sqlite_query_json_result_row_count(VldbSqliteQueryJsonResultHandle* handle);
void vldb_sqlite_query_stream_destroy(VldbSqliteQueryStreamHandle* handle);
uint64_t vldb_sqlite_query_stream_chunk_count(VldbSqliteQueryStreamHandle* handle);
uint64_t vldb_sqlite_query_stream_row_count(VldbSqliteQueryStreamHandle* handle);
uint64_t vldb_sqlite_query_stream_total_bytes(VldbSqliteQueryStreamHandle* handle);
VldbSqliteByteBuffer vldb_sqlite_query_stream_get_chunk(
VldbSqliteQueryStreamHandle* handle,
uint64_t index
);
VldbSqliteTokenizeResultHandle* vldb_sqlite_database_tokenize_text(
VldbSqliteDatabaseHandle* handle,
VldbSqliteFfiTokenizerMode tokenizer_mode,
const char* text,
uint8_t search_mode
);
void vldb_sqlite_tokenize_result_destroy(VldbSqliteTokenizeResultHandle* handle);
char* vldb_sqlite_tokenize_result_normalized_text(VldbSqliteTokenizeResultHandle* handle);
char* vldb_sqlite_tokenize_result_fts_query(VldbSqliteTokenizeResultHandle* handle);
uint64_t vldb_sqlite_tokenize_result_token_count(VldbSqliteTokenizeResultHandle* handle);
char* vldb_sqlite_tokenize_result_get_token(
VldbSqliteTokenizeResultHandle* handle,
uint64_t index
);
int32_t vldb_sqlite_database_upsert_custom_word(
VldbSqliteDatabaseHandle* handle,
const char* word,
uint64_t weight,
VldbSqliteDictionaryMutationResultPod* out_result
);
int32_t vldb_sqlite_database_remove_custom_word(
VldbSqliteDatabaseHandle* handle,
const char* word,
VldbSqliteDictionaryMutationResultPod* out_result
);
VldbSqliteCustomWordListHandle* vldb_sqlite_database_list_custom_words(
VldbSqliteDatabaseHandle* handle
);
void vldb_sqlite_custom_word_list_destroy(VldbSqliteCustomWordListHandle* handle);
uint64_t vldb_sqlite_custom_word_list_len(VldbSqliteCustomWordListHandle* handle);
char* vldb_sqlite_custom_word_list_get_word(
VldbSqliteCustomWordListHandle* handle,
uint64_t index
);
uint64_t vldb_sqlite_custom_word_list_get_weight(
VldbSqliteCustomWordListHandle* handle,
uint64_t index
);
int32_t vldb_sqlite_database_ensure_fts_index(
VldbSqliteDatabaseHandle* handle,
const char* index_name,
VldbSqliteFfiTokenizerMode tokenizer_mode,
VldbSqliteEnsureFtsIndexResultPod* out_result
);
int32_t vldb_sqlite_database_rebuild_fts_index(
VldbSqliteDatabaseHandle* handle,
const char* index_name,
VldbSqliteFfiTokenizerMode tokenizer_mode,
VldbSqliteRebuildFtsIndexResultPod* out_result
);
int32_t vldb_sqlite_database_upsert_fts_document(
VldbSqliteDatabaseHandle* handle,
const char* index_name,
VldbSqliteFfiTokenizerMode tokenizer_mode,
const char* id,
const char* file_path,
const char* title,
const char* content,
VldbSqliteFtsMutationResultPod* out_result
);
int32_t vldb_sqlite_database_delete_fts_document(
VldbSqliteDatabaseHandle* handle,
const char* index_name,
const char* id,
VldbSqliteFtsMutationResultPod* out_result
);
VldbSqliteSearchResultHandle* vldb_sqlite_database_search_fts(
VldbSqliteDatabaseHandle* handle,
const char* index_name,
VldbSqliteFfiTokenizerMode tokenizer_mode,
const char* query,
uint32_t limit,
uint32_t offset
);
void vldb_sqlite_search_result_destroy(VldbSqliteSearchResultHandle* handle);
uint64_t vldb_sqlite_search_result_total(VldbSqliteSearchResultHandle* handle);
uint64_t vldb_sqlite_search_result_len(VldbSqliteSearchResultHandle* handle);
char* vldb_sqlite_search_result_source(VldbSqliteSearchResultHandle* handle);
char* vldb_sqlite_search_result_query_mode(VldbSqliteSearchResultHandle* handle);
char* vldb_sqlite_search_result_get_id(VldbSqliteSearchResultHandle* handle, uint64_t index);
char* vldb_sqlite_search_result_get_file_path(
VldbSqliteSearchResultHandle* handle,
uint64_t index
);
char* vldb_sqlite_search_result_get_title(VldbSqliteSearchResultHandle* handle, uint64_t index);
char* vldb_sqlite_search_result_get_title_highlight(
VldbSqliteSearchResultHandle* handle,
uint64_t index
);
char* vldb_sqlite_search_result_get_content_snippet(
VldbSqliteSearchResultHandle* handle,
uint64_t index
);
double vldb_sqlite_search_result_get_score(VldbSqliteSearchResultHandle* handle, uint64_t index);
uint64_t vldb_sqlite_search_result_get_rank(VldbSqliteSearchResultHandle* handle, uint64_t index);
double vldb_sqlite_search_result_get_raw_score(
VldbSqliteSearchResultHandle* handle,
uint64_t index
);
char* vldb_sqlite_execute_script_json(const char* request_json);
char* vldb_sqlite_execute_batch_json(const char* request_json);
char* vldb_sqlite_query_json_json(const char* request_json);
char* vldb_sqlite_query_stream_json(const char* request_json);
char* vldb_sqlite_query_stream_chunk_json(const char* request_json);
char* vldb_sqlite_query_stream_close_json(const char* request_json);
char* vldb_sqlite_tokenize_text_json(const char* request_json);
char* vldb_sqlite_upsert_custom_word_json(const char* request_json);
char* vldb_sqlite_remove_custom_word_json(const char* request_json);
char* vldb_sqlite_list_custom_words_json(const char* request_json);
char* vldb_sqlite_ensure_fts_index_json(const char* request_json);
char* vldb_sqlite_rebuild_fts_index_json(const char* request_json);
char* vldb_sqlite_upsert_fts_document_json(const char* request_json);
char* vldb_sqlite_delete_fts_document_json(const char* request_json);
char* vldb_sqlite_search_fts_json(const char* request_json);
#ifdef __cplusplus
}
#endif
#endif