]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
MODLANG-10 Modify Javascript exec function to return number of changed rows, thanks...
authorMichael Jerris <mike@jerris.com>
Thu, 12 Apr 2007 18:22:09 +0000 (18:22 +0000)
committerMichael Jerris <mike@jerris.com>
Thu, 12 Apr 2007 18:22:09 +0000 (18:22 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4921 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/include/switch_core_db.h
src/mod/languages/mod_spidermonkey_core_db/mod_spidermonkey_core_db.c
src/switch_core_db.c

index 6fc3c79c00053eb384b692e5d0ae32ad0b2251a6..ab5903b24a3868ad0cbe750647d5e1ff465b4dbe 100644 (file)
@@ -457,6 +457,11 @@ SWITCH_DECLARE(void) switch_core_db_free_table(char **result);
  */
 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 */
index cc38165307d5322fe56572d354724693b1642637..03e97ea38495e05e86bb373c33eafa7e7c8d9132 100644 (file)
@@ -117,7 +117,7 @@ static int db_callback(void *pArg, int argc, char **argv, char **columnNames)
 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]));
@@ -137,7 +137,11 @@ static JSBool db_exec(JSContext * cx, JSObject * obj, uintN argc, jsval * argv,
                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;
index 587928aee4bc660d949327ca70bb44b4da0468ef..f0f4a28f3da80ac86be28d52da4fd5855cdd3ac4 100644 (file)
@@ -142,6 +142,10 @@ SWITCH_DECLARE(void) switch_core_db_free(char *z)
        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;