ソースを参照

Insert an object or an array of objects with ..Sql.insert() method

@soyjavi 14 年 前
コミット
ed3429604e
2 ファイル変更33 行追加14 行削除
  1. 10 1
      examples/kitchen-sink/app/data.js
  2. 23 13
      src/data/Lungo.Data.Sql.js

+ 10 - 1
examples/kitchen-sink/app/data.js

@@ -4,7 +4,7 @@ App.Data = (function(lng, App, undefined) {
         name: 'lungo.js',
         version: '1.0',
         schema: [
-            { name: 'demo', drop: true, fields: {
+            { name: 'test', drop: true, fields: {
                 id: 'INTEGER PRIMARY KEY',
                 name: 'TEXT',
                 done: 'INTEGER DEFAULT 0',
@@ -14,4 +14,13 @@ App.Data = (function(lng, App, undefined) {
         ]
     });
 
+    lng.Data.Sql.insert('test', {name:'javi', done:'1'});
+
+    lng.Data.Sql.insert('test',
+        [
+            {name:'aitor', done:'1'},
+            {name:'iker', done:'1'}
+        ]
+    );
+
 })(LUNGO, App);

+ 23 - 13
src/data/Lungo.Data.Sql.js

@@ -65,22 +65,16 @@ LUNGO.Data.Sql = (function(lng, undefined) {
      * @method insert
      *
      * @param {string} Name of the table in the database
-     * @param {object} Data object to insert in table
+     * @param {object} Object (or Array of objects) to insert in table
      */
-    var insert = function(table, data_obj, callback) {
-        var fields = '';
-        var values = '';
-
-        for (var field in data_obj) {
-            if (lng.Core.isOwnProperty(data_obj, field)) {
-                var value = data_obj[field];
-                fields += (fields) ? ', ' + field : field;
-                if (values) values += ', ';
-                values += (isNaN(value)) ? '"' + value + '"' : value;
+    var insert = function(table, data, callback) {
+        if (lng.Core.toType(data) === 'object') {
+            _insertRow(table, data);
+        } else {
+            for (row in data) {
+                _insertRow(table, data[row]);
             }
         }
-
-        execute('INSERT INTO ' + table + ' (' + fields + ') VALUES (' + values + ')');
     };
 
     /**
@@ -187,6 +181,22 @@ LUNGO.Data.Sql = (function(lng, undefined) {
         }
     };
 
+    var _insertRow = function(table, row) {
+        var fields = '';
+        var values = '';
+
+        for (var field in row) {
+            if (lng.Core.isOwnProperty(row, field)) {
+                var value = row[field];
+                fields += (fields) ? ', ' + field : field;
+                if (values) values += ', ';
+                values += (isNaN(value)) ? '"' + value + '"' : value;
+            }
+        }
+
+        execute('INSERT INTO ' + table + ' (' + fields + ') VALUES (' + values + ')');
+    }
+
     var _throwError = function(transaction, error) {
         lng.Core.log(3, 'lng.Data.Sql >> ' + error.code + ': ' + error.message);
     };