legacy.js 6.6 KB

1
  1. Ext.define('Ext.data.proxy.Sql',{alias:'proxy.sql',extend:'Ext.data.proxy.Client',alternateClassName:'Ext.data.proxy.SQL',isSQLProxy:!0,config:{reader:null,writer:null,table:null,database:'Sencha'},_createOptions:{silent:!0,dirty:!1},updateModel:function(b){var a=this,d,g,c,e,f;if(b){a.uniqueIdStrategy=b.identifier.isUnique;if(!a.getTable()){d=b.entityName;a.setTable(d.slice(d.lastIndexOf('.')+1))}a.columns=e=a.getPersistedModelColumns(b);a.quotedColumns=f=[];for(c=0,g=e.length;c<g;++c){f.push('"'+e[c]+'"')}}a.callParent([b])},setException:function(a,b){a.setException(b)},create:function(a){var d=this,e=a.getRecords(),b,c;a.setStarted();d.executeTransaction(function(f){d.insertRecords(e,f,function(e,d){b=e;c=d})},function(b){a.setException(b)},function(){if(c){a.setException(statementError)}else {a.process(b)}})},read:function(a){var e=this,i=e.getModel(),f=a.getRecords(),d=f?f[0]:null,g,h,b,c;if(d&&!d.phantom){b=d.getId()}else {b=a.getId()}if(b!==undefined){c={idOnly:!0,id:b}}else {c={page:a.getPage(),start:a.getStart(),limit:a.getLimit(),sorters:a.getSorters(),filters:a.getFilters()}}a.setStarted();e.executeTransaction(function(b){e.selectRecords(b,c,function(d,c){g=d;h=c})},function(b){a.setException(b)},function(){if(h){a.setException(statementError)}else {a.process(g)}})},update:function(a){var d=this,e=a.getRecords(),b,c;a.setStarted();d.executeTransaction(function(f){d.updateRecords(f,e,function(e,d){b=e;c=d})},function(b){a.setException(b)},function(){if(c){a.setException(statementError)}else {a.process(b)}})},erase:function(a){var d=this,e=a.getRecords(),c,b;a.setStarted();d.executeTransaction(function(f){d.destroyRecords(f,e,function(e,d){c=e;b=d})},function(b){a.setException(b)},function(){if(b){a.setException(b)}else {a.process(c)}})},createTable:function(b){var a=this;if(!b){a.executeTransaction(function(c){a.createTable(c)});return}a.executeStatement(b,'CREATE TABLE IF NOT EXISTS "'+a.getTable()+'" ('+a.getSchemaString()+')',function(){a.tableExists=!0})},insertRecords:function(e,o,q){var a=this,i=a.columns,n=e.length,h=0,m=a.uniqueIdStrategy,p=a._createOptions,r=e.length,c,f,g,l,k,j,b,d;d=function(c){++h;if(h===n){q.call(a,new Ext.data.ResultSet({success:!b}),b)}};g=Ext.String.repeat('?',i.length,',');l='INSERT INTO "'+a.getTable()+'" ('+a.quotedColumns.join(',')+') VALUES ('+g+')';for(c=0;c<r;++c){f=e[c];k=a.getRecordData(f);j=a.getColumnValues(i,k);(function(c){a.executeStatement(o,l,j,function(b,a){if(!m){c.setId(a.insertId,p)}d()},function(f,a){if(!b){b=[]}b.push(a);d()})})(f)}},selectRecords:function(s,d,r,v){var e=this,m=e.getModel(),t=m.idProperty,j='SELECT * FROM "'+e.getTable()+'"',n=' WHERE ',q=' ORDER BY ',i=[],l,k,o,b,g,u,h,p,c,a,f;if(d.idOnly){j+=n+'"'+t+'" = ?';i.push(d)}else {k=d.filters;g=k&&k.length;if(g){for(b=0;b<g;b++){h=k[b];c=h.getProperty();f=e.toSqlValue(h.getValue(),m.getField(c));a=h.getOperator();if(c!==null){a=a||'=';o='?';if(a==='like'||(a==='='&&h.getAnyMatch())){a='LIKE';f='%'+f+'%'}if(a==='in'||a==='notin'){if(a==='notin'){a='not in'}o='('+Ext.String.repeat('?',f.length,',')+')';i=i.concat(f)}else {i.push(f)}j+=n+'"'+c+'" '+a+' '+o;n=' AND '}}}l=d.sorters;g=l&&l.length;if(g){for(b=0;b<g;b++){p=l[b];c=p.getProperty();if(c!==null){j+=q+'"'+c+'" '+p.getDirection();q=', '}}}if(d.page!==undefined){j+=' LIMIT '+parseInt(d.start,10)+', '+parseInt(d.limit,10)}}e.executeStatement(s,j,i,function(q,p){var k=p.rows,c=k.length,i=[],j=m.fields,o=j.length,n,g,a,l,b,f,h;for(a=0,l=c;a<l;++a){n=k.item(a);g={};for(b=0;b<o;++b){f=j[b];h=f.name;g[h]=e.fromSqlValue(n[h],f)}i.push(new m(g))}r.call(e,new Ext.data.ResultSet({records:i,success:!0,total:c,count:c}))},function(b,a){r.call(e,new Ext.data.ResultSet({success:!1,total:0,count:0}),a)})},updateRecords:function(o,g,p){var a=this,q=a.columns,i=a.quotedColumns,n=g.length,j=0,k=[],s=a._createOptions,e,b,d,r,m,l,h,c,f;f=function(b){++j;if(j===n){p.call(a,new Ext.data.ResultSet({success:!c}),c)}};for(b=0,e=i.length;b<e;b++){k.push(i[b]+' = ?')}m='UPDATE "'+a.getTable()+'" SET '+k.join(', ')+' WHERE "'+a.getModel().idProperty+'" = ?';for(b=0,e=g.length;b<e;++b){d=g[b];l=a.getRecordData(d);h=a.getColumnValues(q,l);h.push(d.getId());(function(b){a.executeStatement(o,m,h,function(a,c){f()},function(d,a){if(!c){c=[]}c.push(a);f()})})(d)}},destroyRecords:function(h,d,c){var a=this,o=a.getTable(),i=a.getModel().idProperty,f=[],e=[],l=[],k=d.length,j='"'+i+'" = ?',b,n,m,g;for(b=0;b<k;b++){f.push(j);e.push(d[b].getId())}g='DELETE FROM "'+a.getTable()+'" WHERE '+f.join(' OR ');a.executeStatement(h,g,e,function(b,e){c.call(a,new Ext.data.ResultSet({success:!0}))},function(e,b){c.call(a,new Ext.data.ResultSet({success:!1}),b)})},getRecordData:function(d){var g=this,e=d.fields,i=d.idProperty,h=g.uniqueIdStrategy,f={},k=e.length,j=d.data,c,b,l,a;for(c=0;c<k;++c){a=e[c];if(a.persist!==!1){b=a.name;if(b===i&&!h){continue}f[b]=g.toSqlValue(j[b],a)}}return f},getColumnValues:function(c,f){var g=c.length,e=[],a,d,b;for(a=0;a<g;a++){d=c[a];b=f[d];if(b!==undefined){e.push(b)}}return e},getSchemaString:function(){var c=this,b=[],i=c.getModel(),e=i.idProperty,h=i.fields,j=c.uniqueIdStrategy,k=h.length,d,f,a,g;for(d=0;d<k;d++){f=h[d];a=f.getType();g=f.name;if(g===e){if(j){a=c.convertToSqlType(a);b.unshift('"'+e+'" '+a)}else {b.unshift('"'+e+'" INTEGER PRIMARY KEY AUTOINCREMENT')}}else {a=c.convertToSqlType(a);b.push('"'+g+'" '+a)}}return b.join(', ')},convertToSqlType:function(a){switch(a.toLowerCase()){case 'string':case 'auto':return 'TEXT';case 'int':case 'date':return 'INTEGER';case 'float':return 'REAL';case 'bool':return 'NUMERIC';}},dropTable:function(){var a=this;a.executeTransaction(function(b){a.executeStatement(b,'DROP TABLE "'+a.getTable()+'"',function(){a.tableExists=!1})},null,null,!1)},getDatabaseObject:function(){return window.openDatabase(this.getDatabase(),'1.0','Sencha Database',5*1024*1024)},privates:{executeStatement:function(d,f,e,b,a){var c=this;d.executeSql(f,e,b?function(){b.apply(c,arguments)}:null,a?function(){a.apply(c,arguments)}:null)},executeTransaction:function(e,c,d,b){var a=this;b=b!==!1;a.getDatabaseObject().transaction(e?function(f){if(b&&!a.tableExists){a.createTable(f)}e.apply(a,arguments)}:null,c?function(){c.apply(a,arguments)}:null,d?function(){d.apply(a,arguments)}:null)},fromSqlValue:function(a,b){if(b.isDateField){a=a?new Date(a):null}else if(b.isBooleanField){a=a===1}return a},getPersistedModelColumns:function(e){var d=e.fields,g=this.uniqueIdStrategy,h=e.idProperty,c=[],i=d.length,b,a,f;for(b=0;b<i;++b){a=d[b];f=a.name;if(f===h&&!g){continue}if(a.persist!==!1){c.push(a.name)}}return c},toSqlValue:function(a,b){if(b.isDateField){a=a?a.getTime():null}else if(b.isBooleanField){a=a?1:0}return a}}});