*/
SWITCH_DECLARE(void) switch_core_db_free(char *z);
+/**
+ * Call this routine to find the number of rows changed by the last statement.
+ */
+SWITCH_DECLARE(int) switch_core_db_changes(switch_core_db_t *db);
+
/** Return values for switch_core_db_exec() and switch_core_db_step()*/
#define SWITCH_CORE_DB_OK 0 /* Successful result */
/* beginning-of-error-codes */
static JSBool db_exec(JSContext * cx, JSObject * obj, uintN argc, jsval * argv, jsval * rval)
{
struct db_obj *dbo = JS_GetPrivate(cx, obj);
- *rval = BOOLEAN_TO_JSVAL(JS_TRUE);
+ *rval = INT_TO_JSVAL(0);
if (argc > 0) {
char *sql = JS_GetStringBytes(JS_ValueToString(cx, argv[0]));
if (err) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error %s\n", err);
switch_core_db_free(err);
- *rval = BOOLEAN_TO_JSVAL(JS_FALSE);
+ *rval = INT_TO_JSVAL(-1);
+ } else {
+ int count = switch_core_db_changes(dbo->db);
+
+ *rval = INT_TO_JSVAL(count);
}
}
return JS_TRUE;
sqlite3_free(z);
}
+SWITCH_DECLARE(int) switch_core_db_changes(switch_core_db_t *db) {
+ return sqlite3_changes(db);
+}
+
SWITCH_DECLARE(char *) switch_mprintf(const char *zFormat, ...)
{
va_list ap;