react-native-sqlite-helper
Version:
react-native-sqlite-helper is based on andpor/react-native-sqlite-storage
1 lines • 18.6 kB
JavaScript
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _regenerator=_interopRequireDefault(require("@babel/runtime/regenerator"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _reactNativeSqliteStorage=_interopRequireDefault(require("react-native-sqlite-storage"));_reactNativeSqliteStorage.default.DEBUG(__DEV__);_reactNativeSqliteStorage.default.enablePromise(true);function isEmptyObj(obj){return Object.prototype.toString.call(obj)==='[object Object]'&&Object.keys(obj).length===0;}function isObject(target){return Object.prototype.toString.call(target)==='[object Object]';}var SQLite=function(){(0,_createClass2.default)(SQLite,null,[{key:"delete",value:function _delete(databaseName){return _regenerator.default.async(function _delete$(_context){while(1){switch(_context.prev=_context.next){case 0:return _context.abrupt("return",_reactNativeSqliteStorage.default.deleteDatabase(databaseName).then(function(res){return{res:res||"Database "+databaseName+" DELETED"};}).catch(function(err){return{err:err};}));case 1:case"end":return _context.stop();}}},null,null,null,Promise);}}]);function SQLite(){(0,_classCallCheck2.default)(this,SQLite);for(var _len=arguments.length,rest=new Array(_len),_key=0;_key<_len;_key++){rest[_key]=arguments[_key];}if(rest.length===1&&isObject(rest[0])){var databaseOptions=rest[0];this.databaseOptions=databaseOptions;}else{var databaseName=rest[0],databaseVersion=rest[1],databaseDisplayName=rest[2],_rest$=rest[3],databaseSize=_rest$===void 0?-1:_rest$;this.databaseName=databaseName;this.databaseVersion=databaseVersion;this.databaseDisplayName=databaseDisplayName;this.databaseSize=databaseSize;}this.successInfo=function(text,absolutely){if(__DEV__){if(absolutely===true){console.log(text);}else{console.log("[SQLiteHelper] info: database "+text+" success.");}}};this.warningInfo=function(text,absolutely){if(__DEV__){if(absolutely===true){console.warn(text);}else{console.warn("[SQLiteHelper] warn: "+text+".");}}};this.errorInfo=function(text,err,absolutely){if(__DEV__){if(absolutely===true){console.error(text);}else{console.error("[SQLiteHelper] err: database "+text+" error, "+err.message);}}};this.open=this._open.bind(this);this.close=this._close.bind(this);this.createTable=this._createTable.bind(this);this.dropTable=this._dropTable.bind(this);this.insertItems=this._insertItems.bind(this);this.deleteItem=this._deleteItem.bind(this);this.updateItem=this._updateItem.bind(this);this.selectItems=this._selectItems.bind(this);}(0,_createClass2.default)(SQLite,[{key:"_open",value:function _open(){var _this=this;var _await$SQLiteStorage$,failed,openDatabase;return _regenerator.default.async(function _open$(_context2){while(1){switch(_context2.prev=_context2.next){case 0:_context2.next=2;return _regenerator.default.awrap(_reactNativeSqliteStorage.default.echoTest().catch(function(err){return{failed:err};}));case 2:_await$SQLiteStorage$=_context2.sent;failed=_await$SQLiteStorage$.failed;if(!failed){_context2.next=6;break;}return _context2.abrupt("return",{err:failed});case 6:if(this.databaseOptions){openDatabase=function openDatabase(){return _reactNativeSqliteStorage.default.openDatabase(_this.databaseOptions);};}else{openDatabase=function openDatabase(){return _reactNativeSqliteStorage.default.openDatabase(_this.databaseName,_this.databaseVersion,_this.databaseDisplayName,_this.databaseSize);};}return _context2.abrupt("return",openDatabase().then(function(db){_this.successInfo('open');_this.db=db;return{res:db};}).catch(function(err){_this.errorInfo('open',err);return{err:err};}));case 8:case"end":return _context2.stop();}}},null,this,null,Promise);}},{key:"_close",value:function _close(){var _this2=this;return _regenerator.default.async(function _close$(_context3){while(1){switch(_context3.prev=_context3.next){case 0:if(!this.db){_context3.next=2;break;}return _context3.abrupt("return",this.db.close().then(function(res){_this2.successInfo('close');_this2.db=null;return{res:res||'Database CLOSED'};}).catch(function(err){_this2.errorInfo('close',err);return{err:err};}));case 2:this.warningInfo('Database was not OPENED');return _context3.abrupt("return",{res:'Database was not OPENED'});case 4:case"end":return _context3.stop();}}},null,this,null,Promise);}},{key:"_createTable",value:function _createTable(tableInfo){var _this3=this;var tableName,tableFields,_await$this$open,err,sqlStr;return _regenerator.default.async(function _createTable$(_context4){while(1){switch(_context4.prev=_context4.next){case 0:_context4.prev=0;tableName=tableInfo.tableName,tableFields=tableInfo.tableFields;if(!(!tableName||!tableFields)){_context4.next=4;break;}throw new Error('Required parameter missing');case 4:if(this.db){_context4.next=11;break;}_context4.next=7;return _regenerator.default.awrap(this.open());case 7:_await$this$open=_context4.sent;err=_await$this$open.err;if(!err){_context4.next=11;break;}throw err;case 11:sqlStr=tableFields.reduce(function(sqlSegment,field,index,arr){return sqlSegment+" "+field.columnName+" "+field.dataType+" "+(index+1===arr.length?');':',');},"CREATE TABLE IF NOT EXISTS "+tableName+"(");_context4.next=14;return _regenerator.default.awrap(this.db.executeSql(sqlStr).then(function(res){_this3.successInfo('createTable');return{res:res};}).catch(function(err){_this3.errorInfo('createTable',err);return{err:err};}));case 14:return _context4.abrupt("return",_context4.sent);case 17:_context4.prev=17;_context4.t0=_context4["catch"](0);return _context4.abrupt("return",{err:_context4.t0});case 20:case"end":return _context4.stop();}}},null,this,[[0,17]],Promise);}},{key:"_dropTable",value:function _dropTable(tableName){var _this4=this;var _await$this$open2,err;return _regenerator.default.async(function _dropTable$(_context5){while(1){switch(_context5.prev=_context5.next){case 0:_context5.prev=0;if(tableName){_context5.next=3;break;}throw new Error('Required parameter missing');case 3:if(this.db){_context5.next=10;break;}_context5.next=6;return _regenerator.default.awrap(this.open());case 6:_await$this$open2=_context5.sent;err=_await$this$open2.err;if(!err){_context5.next=10;break;}throw err;case 10:_context5.next=12;return _regenerator.default.awrap(this.db.executeSql("DROP TABLE "+tableName+";").then(function(res){_this4.successInfo('dropTable');return{res:res};}).catch(function(err){_this4.errorInfo('dropTable',err);return{err:err};}));case 12:return _context5.abrupt("return",_context5.sent);case 15:_context5.prev=15;_context5.t0=_context5["catch"](0);return _context5.abrupt("return",{err:_context5.t0});case 18:case"end":return _context5.stop();}}},null,this,[[0,15]],Promise);}},{key:"_insertItems",value:function _insertItems(tableName,items){var _this5=this;var _await$this$open3,err,sqlStrArr;return _regenerator.default.async(function _insertItems$(_context6){while(1){switch(_context6.prev=_context6.next){case 0:_context6.prev=0;if(!(!tableName||!items)){_context6.next=3;break;}throw new Error('Required parameter missing');case 3:if(!(typeof tableName!=='string')){_context6.next=5;break;}throw new Error("Parameter tableName expects string but "+typeof tableName);case 5:if(Array.isArray(items)){_context6.next=7;break;}throw new Error("Parameter items expects array but "+typeof items);case 7:if(this.db){_context6.next=14;break;}_context6.next=10;return _regenerator.default.awrap(this.open());case 10:_await$this$open3=_context6.sent;err=_await$this$open3.err;if(!err){_context6.next=14;break;}throw err;case 14:sqlStrArr=items.map(function(item){var columns=Object.keys(item);var sqlStr=columns.reduce(function(sqlSegment,columnName,index,arr){return sqlSegment+" "+columnName+" "+(index+1===arr.length?')':',');},"INSERT INTO "+tableName+" (");sqlStr+=columns.reduce(function(sqlSegment,columnName,index,arr){return sqlSegment+" "+(typeof item[columnName]!=='number'?"'"+item[columnName]+"'":item[columnName])+" "+(index+1===arr.length?');':',');},' VALUES (');return sqlStr;});_context6.next=17;return _regenerator.default.awrap(this.db.sqlBatch(sqlStrArr).then(function(res){_this5.successInfo('insertItemsBatch');return{res:res||'All INSERT SQL done'};}).catch(function(err){_this5.errorInfo('insertItemsBatch',err);return{err:err};}));case 17:return _context6.abrupt("return",_context6.sent);case 20:_context6.prev=20;_context6.t0=_context6["catch"](0);return _context6.abrupt("return",{err:_context6.t0});case 23:case"end":return _context6.stop();}}},null,this,[[0,20]],Promise);}},{key:"_deleteItem",value:function _deleteItem(tableName,conditions){var _this6=this;var _await$this$open4,err,sqlStr,_conditions$combine,combine,_conditions;return _regenerator.default.async(function _deleteItem$(_context7){while(1){switch(_context7.prev=_context7.next){case 0:_context7.prev=0;if(tableName){_context7.next=3;break;}throw new Error('Required parameter missing');case 3:if(this.db){_context7.next=10;break;}_context7.next=6;return _regenerator.default.awrap(this.open());case 6:_await$this$open4=_context7.sent;err=_await$this$open4.err;if(!err){_context7.next=10;break;}throw err;case 10:if(conditions){if(Array.isArray(conditions)&&conditions.length>0){sqlStr=conditions.reduce(function(sqlSegment,condition,index,arr){var columnName=condition.columnName,_condition$operator=condition.operator,operator=_condition$operator===void 0?'=':_condition$operator,value=condition.value;if(columnName&&value){var _value=typeof value!=='number'?"'"+value+"'":value;return sqlSegment+" "+columnName+operator+_value+" "+(index+1!==arr.length?'AND':';');}return'';},"DELETE FROM "+tableName+" WHERE");}else if(isObject(conditions)&&!isEmptyObj(conditions)){_conditions$combine=conditions.combine,combine=_conditions$combine===void 0?'OR':_conditions$combine,_conditions=conditions.conditions;sqlStr=_conditions.reduce(function(sqlSegment,condition,index,arr){var columnName=condition.columnName,_condition$operator2=condition.operator,operator=_condition$operator2===void 0?'=':_condition$operator2,value=condition.value;if(columnName&&value){var _value=typeof value!=='number'?"'"+value+"'":value;return sqlSegment+" "+columnName+operator+_value+" "+(index+1!==arr.length?combine:';');}return'';},"DELETE FROM "+tableName+" WHERE");}else if(typeof conditions==='string'){sqlStr="DELETE FROM "+tableName+" WHERE "+conditions+";";}}else{sqlStr="DELETE FROM "+tableName+";";}_context7.next=13;return _regenerator.default.awrap(this.db.executeSql(sqlStr).then(function(res){_this6.successInfo("SQLiteStorage deleteItem success: \u5F71\u54CD "+res[0].rowsAffected+" \u884C",true);return{res:res||'DELETE SQL done'};}).catch(function(err){_this6.errorInfo('deleteItem',err);return{err:err};}));case 13:return _context7.abrupt("return",_context7.sent);case 16:_context7.prev=16;_context7.t0=_context7["catch"](0);return _context7.abrupt("return",{err:_context7.t0});case 19:case"end":return _context7.stop();}}},null,this,[[0,16]],Promise);}},{key:"_updateItem",value:function _updateItem(tableName,item,conditions){var _this7=this;var _await$this$open5,err,columns,sqlStr,_conditions$combine2,combine,_conditions;return _regenerator.default.async(function _updateItem$(_context8){while(1){switch(_context8.prev=_context8.next){case 0:_context8.prev=0;if(!(!tableName||!item)){_context8.next=3;break;}throw new Error('Required parameter missing');case 3:if(!(typeof tableName!=='string')){_context8.next=5;break;}throw new Error("Parameter tableName expects string but "+typeof tableName);case 5:if(isObject(item)){_context8.next=7;break;}throw new Error("Parameter item expects object but "+Object.prototype.toString.call(item));case 7:if(this.db){_context8.next=14;break;}_context8.next=10;return _regenerator.default.awrap(this.open());case 10:_await$this$open5=_context8.sent;err=_await$this$open5.err;if(!err){_context8.next=14;break;}throw err;case 14:columns=Object.keys(item);sqlStr=columns.reduce(function(sqlSegment,columnName,index,arr){return sqlSegment+" "+columnName+"="+(typeof item[columnName]!=='number'?"'"+item[columnName]+"'":item[columnName])+" "+(index+1!==arr.length?',':'');},"UPDATE "+tableName+" SET");if(conditions){if(Array.isArray(conditions)&&conditions.length>0){sqlStr+=conditions.reduce(function(sqlSegment,condition,index,arr){var columnName=condition.columnName,_condition$operator3=condition.operator,operator=_condition$operator3===void 0?'=':_condition$operator3,value=condition.value;if(columnName&&value){var _value=typeof value!=='number'?"'"+value+"'":value;return sqlSegment+" "+columnName+operator+_value+" "+(index+1!==arr.length?'AND':';');}return'';},'WHERE');}else if(isObject(conditions)&&!isEmptyObj(conditions)){_conditions$combine2=conditions.combine,combine=_conditions$combine2===void 0?'OR':_conditions$combine2,_conditions=conditions.conditions;sqlStr+=_conditions.reduce(function(sqlSegment,condition,index,arr){var columnName=condition.columnName,_condition$operator4=condition.operator,operator=_condition$operator4===void 0?'=':_condition$operator4,value=condition.value;if(columnName&&value){var _value=typeof value!=='number'?"'"+value+"'":value;return sqlSegment+" "+columnName+operator+_value+" "+(index+1!==arr.length?combine:';');}return'';},'WHERE');}else if(typeof conditions==='string'){sqlStr+="WHERE "+conditions+";";}}else sqlStr+=';';_context8.next=19;return _regenerator.default.awrap(this.db.executeSql(sqlStr).then(function(res){_this7.successInfo("SQLiteStorage updateItem success: \u5F71\u54CD "+res[0].rowsAffected+" \u884C",true);return{res:res||'UPDATE SQL done'};}).catch(function(err){_this7.errorInfo('updateItem',err);return{err:err};}));case 19:return _context8.abrupt("return",_context8.sent);case 22:_context8.prev=22;_context8.t0=_context8["catch"](0);return _context8.abrupt("return",{err:_context8.t0});case 25:case"end":return _context8.stop();}}},null,this,[[0,22]],Promise);}},{key:"_selectItems",value:function _selectItems(tableName){var _this8=this;var config,_config$columns,columns,conditions,pageNo,pageLength,_await$this$open6,err,sqlStr,_conditions$combine3,combine,_conditions,_conditions$combine4,_combine,_conditions2,limit,offset,_args9=arguments;return _regenerator.default.async(function _selectItems$(_context9){while(1){switch(_context9.prev=_context9.next){case 0:config=_args9.length>1&&_args9[1]!==undefined?_args9[1]:{};_context9.prev=1;_config$columns=config.columns,columns=_config$columns===void 0?'*':_config$columns,conditions=config.conditions,pageNo=config.pageNo,pageLength=config.pageLength;if(tableName){_context9.next=5;break;}throw new Error('Required parameter missing');case 5:if(this.db){_context9.next=12;break;}_context9.next=8;return _regenerator.default.awrap(this.open());case 8:_await$this$open6=_context9.sent;err=_await$this$open6.err;if(!err){_context9.next=12;break;}throw err;case 12:if(columns==='*'){if(conditions){if(Array.isArray(conditions)&&conditions.length>0){sqlStr=conditions.reduce(function(sqlSegment,condition,index,arr){var columnName=condition.columnName,_condition$operator5=condition.operator,operator=_condition$operator5===void 0?'=':_condition$operator5,value=condition.value;if(columnName&&value){var _value=typeof value!=='number'?"'"+value+"'":value;return sqlSegment+" "+columnName+operator+_value+" "+(index+1!==arr.length?'AND':'');}return'';},"SELECT * FROM "+tableName+" WHERE");}else if(isObject(conditions)&&!isEmptyObj(conditions)){_conditions$combine3=conditions.combine,combine=_conditions$combine3===void 0?'OR':_conditions$combine3,_conditions=conditions.conditions;sqlStr=_conditions.reduce(function(sqlSegment,condition,index,arr){var columnName=condition.columnName,_condition$operator6=condition.operator,operator=_condition$operator6===void 0?'=':_condition$operator6,value=condition.value;if(columnName&&value){var _value=typeof value!=='number'?"'"+value+"'":value;return sqlSegment+" "+columnName+operator+_value+" "+(index+1!==arr.length?combine:'');}return'';},"SELECT * FROM "+tableName+" WHERE");}else if(typeof conditions==='string'){sqlStr="SELECT * FROM "+tableName+" WHERE "+conditions+";";}}else{sqlStr="SELECT * FROM "+tableName;}}else{sqlStr=columns.reduce(function(sqlSegment,column,index,arr){return sqlSegment+" "+column+" "+(index+1!==arr.length?',':'');},'SELECT');if(conditions){if(Array.isArray(conditions)&&conditions.length>0){sqlStr+=conditions.reduce(function(sqlSegment,condition,index,arr){var columnName=condition.columnName,_condition$operator7=condition.operator,operator=_condition$operator7===void 0?'=':_condition$operator7,value=condition.value;if(columnName&&value){var _value=typeof value!=='number'?"'"+value+"'":value;return sqlSegment+" "+columnName+operator+_value+" "+(index+1!==arr.length?'AND':'');}return'';},"FROM "+tableName+" WHERE");}else if(isObject(conditions)&&!isEmptyObj(conditions)){_conditions$combine4=conditions.combine,_combine=_conditions$combine4===void 0?'OR':_conditions$combine4,_conditions2=conditions.conditions;sqlStr+=_conditions2.reduce(function(sqlSegment,condition,index,arr){var columnName=condition.columnName,_condition$operator8=condition.operator,operator=_condition$operator8===void 0?'=':_condition$operator8,value=condition.value;if(columnName&&value){var _value=typeof value!=='number'?"'"+value+"'":value;return sqlSegment+" "+columnName+operator+_value+" "+(index+1!==arr.length?_combine:'');}return'';},"FROM "+tableName+" WHERE");}else if(typeof conditions==='string'){sqlStr+="FROM "+tableName+" WHERE "+conditions;}}else{sqlStr+="FROM "+tableName;}}if(pageNo&&pageLength){limit=pageNo*pageLength;offset=pageLength*(pageNo-1)>0?pageLength*(pageNo-1):0;sqlStr+=" limit "+limit+" offset "+offset+";";}else{sqlStr+=';';}_context9.next=16;return _regenerator.default.awrap(this.db.executeSql(sqlStr).then(function(res){if(res&&res[0]&&res[0].rows){_this8.successInfo("SQLiteStorage selectItems success: \u67E5\u8BE2\u5230 "+res[0].rows.length+" \u884C",true);var queryResult=[];var len=res[0].rows.length;for(var i=0;i<len;i++){queryResult.push(res[0].rows.item(i));}return{res:queryResult};}return{res:res};}).catch(function(err){_this8.errorInfo('selectItems',err);return{err:err};}));case 16:return _context9.abrupt("return",_context9.sent);case 19:_context9.prev=19;_context9.t0=_context9["catch"](1);return _context9.abrupt("return",{err:_context9.t0});case 22:case"end":return _context9.stop();}}},null,this,[[1,19]],Promise);}}]);return SQLite;}();exports.default=SQLite;