www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit e8ed4281f95c59282b7532bc83e14e0de516b2e4
parent 936ef86584fd2e831d8cc1d31667abc38393fc58
Author: Dan Stillman <dstillman@zotero.org>
Date:   Fri, 16 Jun 2006 21:44:41 +0000

Change the DB query functions to return values of the actual types they are, rather than to return everything as strings -- this will prevent the need for parseInt on COUNT(*) values, etc. and is generally better

This will temporarily break the display of numeric fields on the interface side


Diffstat:
Mchrome/chromeFiles/content/scholar/xpcom/db.js | 38++++++++++++++++++++++++++++----------
1 file changed, 28 insertions(+), 10 deletions(-)

diff --git a/chrome/chromeFiles/content/scholar/xpcom/db.js b/chrome/chromeFiles/content/scholar/xpcom/db.js @@ -59,8 +59,9 @@ Scholar.DB = new function(){ var dataset = new Array(); while (statement.executeStep()){ var row = new Array(); + for(var i=0; i<statement.columnCount; i++) { - row[statement.getColumnName(i)] = statement.getUTF8String(i); + row[statement.getColumnName(i)] = _getTypedValue(statement, i); } dataset.push(row); } @@ -110,14 +111,8 @@ Scholar.DB = new function(){ statement.reset(); return false; } - if (sql.indexOf('SELECT COUNT(*)') > -1){ - var value = statement.getInt32(0); - } - else { - var value = statement.getUTF8String(0); - } - statement.reset(); - return value; + + return _getTypedValue(statement, 0); } @@ -141,7 +136,7 @@ Scholar.DB = new function(){ if (statement){ var column = new Array(); while (statement.executeStep()){ - column.push(statement.getUTF8String(0)); + column.push(_getTypedValue(statement, 0)); } statement.reset(); return column.length ? column : false; @@ -314,4 +309,27 @@ Scholar.DB = new function(){ return _connection; } + + + function _getTypedValue(statement, i){ + var type = statement.getTypeOfIndex(i); + switch (type){ + case statement.VALUE_TYPE_INTEGER: + var func = statement.getInt32; + break; + case statement.VALUE_TYPE_TEXT: + var func = statement.getUTF8String; + break; + case statement.VALUE_TYPE_NULL: + return null; + case statement.VALUE_TYPE_FLOAT: + var func = statement.getDouble; + break; + case statement.VALUE_TYPE_BLOB: + var func = statement.getBlob; + break; + } + + return func(i); + } }