diff options
author | Jake Feasel <jfeasel@gmail.com> | 2012-09-13 00:07:27 -0700 |
---|---|---|
committer | Jake Feasel <jfeasel@gmail.com> | 2012-09-13 00:07:27 -0700 |
commit | f23f16acc8fedbf55a9885af69f07cfb31a8d206 (patch) | |
tree | d7c3f3605def634d1f31aa53821b76b2e5d90e4f /javascripts/libs/browser_engines/sqljs_driver.js | |
parent | 4509373f3b392623a4eceaff6ed6afffb51a32f5 (diff) | |
download | sqlfiddle-f23f16acc8fedbf55a9885af69f07cfb31a8d206.zip sqlfiddle-f23f16acc8fedbf55a9885af69f07cfb31a8d206.tar.gz sqlfiddle-f23f16acc8fedbf55a9885af69f07cfb31a8d206.tar.bz2 |
Continued progress with refactoring to use AMD
Diffstat (limited to 'javascripts/libs/browser_engines/sqljs_driver.js')
-rw-r--r-- | javascripts/libs/browser_engines/sqljs_driver.js | 160 |
1 files changed, 0 insertions, 160 deletions
diff --git a/javascripts/libs/browser_engines/sqljs_driver.js b/javascripts/libs/browser_engines/sqljs_driver.js deleted file mode 100644 index 89831da..0000000 --- a/javascripts/libs/browser_engines/sqljs_driver.js +++ /dev/null @@ -1,160 +0,0 @@ -define(["jQuery", "sqlite_driver"], function ($, SQLite_driver) { - - var SQLjs_driver = function () { - this.db = null; - return this; - } - - $.extend(SQLjs_driver.prototype,SQLite_driver.prototype); // inherit from parent class - - - SQLjs_driver.prototype.buildSchema = function (args) { - - var _this = this; // preserve reference to current object through local closures - - try { - - /* - * Closure used to handle both cases of when the sql.js library - * has already been loaded, or when it has not yet been. - */ - var jsBuildSchema = function () { - - _this.db = SQL.open(); - $.each(SQLite_driver.prototype.splitStatement.call(this,args["ddl"],args["statement_separator"]), function (i, statement) { - _this.db.exec(statement); - }); - - args["success"](); - } - - // If the sql.js code isn't yet loaded, do it now. - if (window.SQL === undefined) - { - $.getScript("javascripts_static/sql.js", function (script, textStatus, jqXHR) { - jsBuildSchema(); - }).fail(function(jqxhr, settings, exception){ - args["error"]("Your browser does not work with SQL.js. Try using a different browser (Chrome, Safari, Firefox, IE 10, etc...), or a newer version of your current one."); - }); - } - else - { - if (_this.db) - { - _this.db.close(); - } - - jsBuildSchema(); - } - - } - catch (e) - { - args["error"](e); - } - - } - - SQLjs_driver.prototype.executeQuery = function (args) { - - var _this = this; // preserve reference to current object through local closures - - try { - if (! _this.db) - { - throw ("Database Schema not available!"); - } - - var returnSets = []; - - _this.db.exec("BEGIN TRANSACTION"); - - $.each(SQLite_driver.prototype.splitStatement.call(this,args["sql"],args["statement_separator"]), function (i, statement) { - if ($.trim(statement).length) { - var startTime = new Date(); - - var setArray = []; - - try { - setArray = _this.db.exec(statement); - - var thisSet = { - "SUCCEEDED": true, - "EXECUTIONTIME": (new Date()) - startTime, - "RESULTS": { - "COLUMNS": [], - "DATA": [] - }, - "EXECUTIONPLAN": { - "COLUMNS": [], - "DATA": [] - } - - }; - - if (setArray.length) { - $.each(setArray, function(rowNumber, row){ - var rowVals = []; - $.each(row, function(columnNumber, col){ - if (rowNumber == 0) { - thisSet["RESULTS"]["COLUMNS"].push(col.column); - } - rowVals.push(col.value); - }); - thisSet["RESULTS"]["DATA"].push(rowVals); - }); - } - - try { - - exectionPlanArray = _this.db.exec("EXPLAIN QUERY PLAN " + statement); - - if (exectionPlanArray.length) { - $.each(exectionPlanArray, function(rowNumber, row){ - var rowVals = []; - $.each(row, function(columnNumber, col){ - if (rowNumber == 0) { - thisSet["EXECUTIONPLAN"]["COLUMNS"].push(col.column); - } - rowVals.push(col.value); - }); - thisSet["EXECUTIONPLAN"]["DATA"].push(rowVals); - }); - } - - } - catch (e) { - // if we get an error with the execution plan, just ignore and move on. - } - - returnSets.push(thisSet); - - - } - catch (e) { - var thisSet = { - "SUCCEEDED": false, - "EXECUTIONTIME": (new Date()) - startTime, - "ERRORMESSAGE": e - }; - returnSets.push(thisSet); - return false; // breaks the each loop - } - - } - }); - - _this.db.exec("ROLLBACK TRANSACTION"); - - args["success"](returnSets); - - } - catch (e) - { - args["error"](e); - } - - } - - return SQLjs_driver; -}); |