sql-wasm
Version:
SQLite compiled to WebAssembly through Emscripten.
99 lines (92 loc) • 5.5 kB
text/typescript
/* eslint-disable camelcase */
export default (module: any) => {
const sqlite3_open = module.cwrap("sqlite3_open", "number", ["string", "number"]);
const sqlite3_close_v2 = module.cwrap("sqlite3_close_v2", "number", ["number"]);
const sqlite3_exec = module.cwrap("sqlite3_exec", "number", ["number", "string", "number", "number", "number"]);
const sqlite3_free = module.cwrap("sqlite3_free", "", ["number"]);
const sqlite3_changes = module.cwrap("sqlite3_changes", "number", ["number"]);
// Prepared statements
// prepare
const sqlite3_prepare_v2 = module.cwrap("sqlite3_prepare_v2", "number", ["number", "string", "number", "number", "number"]);
// Version of sqlite3_prepare_v2 to which a pointer to a string that is already
// in memory is passed.
const sqlite3_prepare_v2_sqlptr = module.cwrap("sqlite3_prepare_v2", "number", ["number", "number", "number", "number", "number"]);
// Bind parameters
// int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));
// We declare const char* as a number, because we will manually allocate the memory and pass a pointer to the function
const sqlite3_bind_text = module.cwrap("sqlite3_bind_text", "number", ["number", "number", "number", "number", "number"]);
const sqlite3_bind_blob = module.cwrap("sqlite3_bind_blob", "number", ["number", "number", "number", "number", "number"]);
// int sqlite3_bind_double(sqlite3_stmt*, int, double);
const sqlite3_bind_double = module.cwrap("sqlite3_bind_double", "number", ["number", "number", "number"]);
// int sqlite3_bind_double(sqlite3_stmt*, int, int);
const sqlite3_bind_int = module.cwrap("sqlite3_bind_int", "number", ["number", "number", "number"]);
// int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);
const sqlite3_bind_parameter_index = module.cwrap("sqlite3_bind_parameter_index", "number", ["number", "string"]);
// Get values
// int sqlite3_step(sqlite3_stmt*)
const sqlite3_step = module.cwrap("sqlite3_step", "number", ["number"]);
const sqlite3_errmsg = module.cwrap("sqlite3_errmsg", "string", ["number"]);
// int sqlite3_data_count(sqlite3_stmt *pStmt);
const sqlite3_data_count = module.cwrap("sqlite3_data_count", "number", ["number"]);
const sqlite3_column_double = module.cwrap("sqlite3_column_double", "number", ["number", "number"]);
const sqlite3_column_text = module.cwrap("sqlite3_column_text", "string", ["number", "number"]);
const sqlite3_column_blob = module.cwrap("sqlite3_column_blob", "number", ["number", "number"]);
const sqlite3_column_bytes = module.cwrap("sqlite3_column_bytes", "number", ["number", "number"]);
const sqlite3_column_type = module.cwrap("sqlite3_column_type", "number", ["number", "number"]);
// const char *sqlite3_column_name(sqlite3_stmt*, int N);
const sqlite3_column_name = module.cwrap("sqlite3_column_name", "string", ["number", "number"]);
// int sqlite3_reset(sqlite3_stmt *pStmt);
const sqlite3_reset = module.cwrap("sqlite3_reset", "number", ["number"]);
const sqlite3_clear_bindings = module.cwrap("sqlite3_clear_bindings", "number", ["number"]);
// int sqlite3_finalize(sqlite3_stmt *pStmt);
const sqlite3_finalize = module.cwrap("sqlite3_finalize", "number", ["number"]);
// Create custom functions
const sqlite3_create_function_v2 = module.cwrap("sqlite3_create_function_v2", "number", ["number", "string", "number", "number", "number", "number", "number", "number", "number"]);
const sqlite3_value_type = module.cwrap("sqlite3_value_type", "number", ["number"]);
const sqlite3_value_bytes = module.cwrap("sqlite3_value_bytes", "number", ["number"]);
const sqlite3_value_text = module.cwrap("sqlite3_value_text", "string", ["number"]);
const sqlite3_value_int = module.cwrap("sqlite3_value_int", "number", ["number"]);
const sqlite3_value_blob = module.cwrap("sqlite3_value_blob", "number", ["number"]);
const sqlite3_value_double = module.cwrap("sqlite3_value_double", "number", ["number"]);
const sqlite3_result_double = module.cwrap("sqlite3_result_double", "", ["number", "number"]);
const sqlite3_result_null = module.cwrap("sqlite3_result_null", "", ["number"]);
const sqlite3_result_text = module.cwrap("sqlite3_result_text", "", ["number", "string", "number", "number"]);
const RegisterExtensionFunctions = module.cwrap("RegisterExtensionFunctions", "number", ["number"]);
return {
sqlite3_open,
sqlite3_close_v2,
sqlite3_exec,
sqlite3_free,
sqlite3_changes,
sqlite3_prepare_v2,
sqlite3_prepare_v2_sqlptr,
sqlite3_bind_text,
sqlite3_bind_blob,
sqlite3_bind_double,
sqlite3_bind_int,
sqlite3_bind_parameter_index,
sqlite3_step,
sqlite3_errmsg,
sqlite3_data_count,
sqlite3_column_double,
sqlite3_column_text,
sqlite3_column_blob,
sqlite3_column_bytes,
sqlite3_column_type,
sqlite3_column_name,
sqlite3_reset,
sqlite3_clear_bindings,
sqlite3_finalize,
sqlite3_create_function_v2,
sqlite3_value_type,
sqlite3_value_bytes,
sqlite3_value_text,
sqlite3_value_int,
sqlite3_value_blob,
sqlite3_value_double,
sqlite3_result_double,
sqlite3_result_null,
sqlite3_result_text,
RegisterExtensionFunctions
};
};