slice (copy) columns before popping (deleting)
This commit is contained in:
		
							parent
							
								
									db856e025a
								
							
						
					
					
						commit
						3b581ef492
					
				| @ -7,6 +7,7 @@ function wrap(db, dir) { | ||||
|   var promises = []; | ||||
|   var earr = []; | ||||
|   var dbsMap = {}; | ||||
|   var debug = false; | ||||
| 
 | ||||
|   db.escape = function (str) { | ||||
|     return (str||'').replace(/'/g, "''"); | ||||
| @ -53,8 +54,10 @@ function wrap(db, dir) { | ||||
|         return; | ||||
|       } | ||||
| 
 | ||||
|       console.log('sqlite3 rows 0'); | ||||
|       console.log(result); | ||||
|       if (debug) { | ||||
|         console.log('sqlite3 rows 0'); | ||||
|         console.log(result); | ||||
|       } | ||||
| 
 | ||||
|       function alterTable() { | ||||
|         var column = columns.pop(); | ||||
| @ -77,8 +80,11 @@ function wrap(db, dir) { | ||||
|           + db.escape(column.name) + " " + db.escape(column.type) | ||||
|           + " DEFAULT null" | ||||
|           ; | ||||
|         console.log('sqlite3 1'); | ||||
|         console.log(sql); | ||||
| 
 | ||||
|         if (debug) { | ||||
|           console.log('sqlite3 1'); | ||||
|           console.log(sql); | ||||
|         } | ||||
| 
 | ||||
|         db.all(sql, earr, function (err, results) { | ||||
|           if (err) { | ||||
| @ -88,12 +94,16 @@ function wrap(db, dir) { | ||||
|             return; | ||||
|           } | ||||
| 
 | ||||
|           console.log('sqlite3 rows 1'); | ||||
|           console.log(results); | ||||
|           if (debug) { | ||||
|             console.log('sqlite3 rows 1'); | ||||
|             console.log(results); | ||||
|           } | ||||
| 
 | ||||
|           alterTable(); | ||||
|         }); | ||||
|       } | ||||
| 
 | ||||
|       columns = columns.slice(0); | ||||
|       alterTable(); | ||||
|     }); | ||||
|   } | ||||
| @ -113,29 +123,33 @@ function wrap(db, dir) { | ||||
|     return col; | ||||
|   } | ||||
| 
 | ||||
|   function createTable(opts) { | ||||
|     if (!opts.modelname && !opts.tablename) { | ||||
|       throw new Error('Please specify opts.modelname'); | ||||
|   function createTable(dir) { | ||||
|     if (!dir.modelname && !dir.tablename) { | ||||
|       throw new Error('Please specify dir.modelname'); | ||||
|     } | ||||
| 
 | ||||
|     if (!opts.tablename) { | ||||
|       opts.tablename = snakeCase(opts.modelname); | ||||
|     if (!dir.tablename) { | ||||
|       dir.tablename = snakeCase(dir.modelname); | ||||
|     } | ||||
| 
 | ||||
|     if (!opts.indices) { | ||||
|       opts.indices = []; | ||||
|     if (!dir.modelname) { | ||||
|       dir.modelname = upperCamelCase(dir.tablename); | ||||
|     } | ||||
| 
 | ||||
|     if (!dir.indices) { | ||||
|       dir.indices = []; | ||||
|     } | ||||
| 
 | ||||
|     var DB = {}; | ||||
|     var tablename = db.escape(snakeCase(opts.tablename) || 'data'); | ||||
|     var idname = db.escape(snakeCase(opts.idname || 'id')); | ||||
|     var idnameCased = (camelCase(opts.idname || 'id')); | ||||
|     var tablename = (db.escape(dir.tablename || 'data')); | ||||
|     var idname = (db.escape(dir.idname || 'id')); | ||||
|     var idnameCased = (camelCase(dir.idname || 'id')); | ||||
| 
 | ||||
|     opts.indices.forEach(normalizeColumn); | ||||
|     dir.indices.forEach(normalizeColumn); | ||||
| 
 | ||||
|     db = PromiseA.promisifyAll(db); | ||||
| 
 | ||||
|     if (opts && opts.verbose || db.verbose) { | ||||
|     if (dir && dir.verbose || db.verbose) { | ||||
|       console.log('Getting Verbose up in here'); | ||||
|       db.on('trace', function (str) { | ||||
|         console.log('SQL:', str); | ||||
| @ -204,26 +218,26 @@ function wrap(db, dir) { | ||||
|       }); | ||||
|     }; | ||||
| 
 | ||||
|     DB.find = function (opts, params) { | ||||
|     DB.find = function (obj, params) { | ||||
|       var sql = 'SELECT * FROM \'' + tablename + '\' '; | ||||
|       var keys = opts && Object.keys(opts); | ||||
|       var keys = obj && Object.keys(obj); | ||||
| 
 | ||||
|       if (opts && keys.length) { | ||||
|       if (obj && keys.length) { | ||||
|         sql += 'WHERE '; | ||||
| 
 | ||||
|         keys.forEach(function (key, i) { | ||||
|           if (i !== 0) { | ||||
|             sql += 'AND '; | ||||
|           } | ||||
|           if (null === opts[key]) { | ||||
|             sql += db.escape(snakeCase(key)) + " IS '" + db.escape(opts[key]) + "'"; | ||||
|           if (null === obj[key]) { | ||||
|             sql += db.escape(snakeCase(key)) + " IS '" + db.escape(obj[key]) + "'"; | ||||
|           } | ||||
|           else { | ||||
|             sql += db.escape(snakeCase(key)) + " = '" + db.escape(opts[key]) + "'"; | ||||
|             sql += db.escape(snakeCase(key)) + " = '" + db.escape(obj[key]) + "'"; | ||||
|           } | ||||
|         }); | ||||
|       } | ||||
|       else if (null !== opts || (params && !params.limit)) { | ||||
|       else if (null !== obj || (params && !params.limit)) { | ||||
|         return PromiseA.reject(new Error("to find all you must explicitly specify find(null, { limit: <<int>> })")); | ||||
|       } | ||||
| 
 | ||||
| @ -356,7 +370,7 @@ function wrap(db, dir) { | ||||
|       var vals = []; | ||||
| 
 | ||||
|       ['hasOne', 'hasMany', 'hasAndBelongsToMany', 'belongsTo', 'belongsToMany'].forEach(function (relname) { | ||||
|         var rels = opts[relname]; | ||||
|         var rels = dir[relname]; | ||||
| 
 | ||||
|         if (!rels) { | ||||
|           return; | ||||
| @ -375,7 +389,7 @@ function wrap(db, dir) { | ||||
|         }); | ||||
|       }); | ||||
| 
 | ||||
|       opts.indices.forEach(function (col) { | ||||
|       dir.indices.forEach(function (col) { | ||||
|         var val = data[camelCase(col.name)]; | ||||
| 
 | ||||
|         //if (col.name in data)
 | ||||
| @ -490,7 +504,7 @@ function wrap(db, dir) { | ||||
|       var indexable = [idname + ' TEXT']; | ||||
|       var sql; | ||||
| 
 | ||||
|       opts.indices.forEach(function (col) { | ||||
|       dir.indices.forEach(function (col) { | ||||
|         if ('string' === typeof col) { | ||||
|           col = { name: col, type: 'TEXT' }; | ||||
|         } | ||||
| @ -509,7 +523,7 @@ function wrap(db, dir) { | ||||
|         ; | ||||
| 
 | ||||
|       db.runAsync(sql).then(function () { | ||||
|         sqlite3GetColumns(tablename, opts.indices, function (err) { | ||||
|         sqlite3GetColumns(tablename, dir.indices, function (err) { | ||||
|           if (err) { | ||||
|             console.error('[Error] dbwrap get columns'); | ||||
|             console.error(err.stack); | ||||
| @ -523,16 +537,10 @@ function wrap(db, dir) { | ||||
|     }); | ||||
|   } | ||||
| 
 | ||||
|   dir.forEach(function (opts) { | ||||
|     promises.push(createTable(opts).then(function (dbw) { | ||||
|       var modelname = opts.modelname;  | ||||
|   dir.forEach(function (dir) { | ||||
|     promises.push(createTable(dir).then(function (dbw) { | ||||
| 
 | ||||
|       if (!modelname) { | ||||
|         modelname = (opts.tablename || 'data'); | ||||
|         modelname = upperCamelCase(modelname); | ||||
|       } | ||||
| 
 | ||||
|       dbsMap[modelname] = dbw; | ||||
|       dbsMap[dir.modelname] = dbw; | ||||
| 
 | ||||
|       return dbw; | ||||
|     })); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user