dbgate-plugin-mysql 5.0.0-alpha.1 → 5.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/backend.js +1 -1
- package/dist/frontend.js +1 -1
- package/package.json +2 -2
package/dist/backend.js
CHANGED
|
@@ -278,7 +278,7 @@ e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月
|
|
|
278
278
|
//! moment.js locale configuration
|
|
279
279
|
e.defineLocale("zh-mo",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"D/M/YYYY",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(0))},function(e,t,n){!function(e){"use strict";
|
|
280
280
|
//! moment.js locale configuration
|
|
281
|
-
e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(0))},function(e,t,n){const r=n(281);e.exports={packageName:"dbgate-plugin-mysql",drivers:r}},function(e,t,n){const r=n(7),i=n(32),a=n(282),s=n(284),o=n(47),{createBulkInsertStreamBase:u,makeUniqueColumnNames:_}=n(53),{MySqlDumper:c}=n(546);function d(e){if(e){const t=e.map(e=>({columnName:e.name}));return _(t),t}return null}function l(e,t){return r.zipObject(t.map(e=>e.columnName),e)}const f=a.map(e=>({...e,analyserClass:s,async connect({server:e,port:t,user:n,password:r,database:i,ssl:a,isReadOnly:s,forceRowsAsObjects:u}){const _=o.createConnection({host:e,port:t,user:n,password:r,database:i,ssl:a,rowsAsArray:!u,supportBigNumbers:!0,bigNumberStrings:!0,dateStrings:!0});return _._database_name=i,s&&await this.query(_,"SET SESSION TRANSACTION READ ONLY"),_},close:async e=>e.close(),query:(e,t)=>null==t?{rows:[],columns:[]}:new Promise((n,r)=>{e.query(t,(function(e,t,i){e&&r(e);const a=d(i);n({rows:t&&a&&t.map&&t.map(e=>l(e,a)),columns:a})}))}),async stream(e,t,n){const r=e.query(t);let i=[];r.on("error",e=>{console.log("ERROR",e);const{message:t,lineNumber:r,procName:i}=e;n.info({message:t,line:r,procedure:i,time:new Date,severity:"error"})}).on("fields",e=>{i=d(e),i&&n.recordset(i)}).on("result",e=>{e&&e.constructor&&"OkPacket"==e.constructor.name?n.info({message:`${e.affectedRows} rows affected`,time:new Date,severity:"info"}):i&&n.row(l(e,i))}).on("end",()=>{n.done()})},async readQuery(e,t,n){const r=e.query(t),a=new i.PassThrough({objectMode:!0,highWaterMark:100});let s=[];return r.on("error",e=>{console.error(e),a.end()}).on("fields",e=>{s=d(e),a.write({__isStreamHeader:!0,...n||{columns:s}})}).on("result",e=>a.write(l(e,s))).on("end",()=>a.end()),a},async getVersion(e){const{rows:t}=await this.query(e,"show variables like 'version'"),n=t[0].Value;if(n){const e=n.match(/(.*)-MariaDB-/);if(e)return{version:n,versionText:`MariaDB ${e[1]}`}}return{version:n,versionText:`MySQL ${n}`}},async listDatabases(e){const{rows:t}=await this.query(e,"show databases");return t.map(e=>({name:e.Database}))},async writeTable(e,t,n){return u(this,i,e,t,n)},async createBackupDumper(e,t){const{outputFile:n,databaseName:r,schemaName:i}=t;return new c({connection:e,schema:r||i,outputFile:n})}}));e.exports=f},function(e,t,n){const{driverBase:r}=global.DBGATE_TOOLS,{mysqlSplitterOptions:i}=n(52),a={...r,showConnectionField:(e,t)=>["server","port","user","password","defaultDatabase","singleDatabase","isReadOnly"].includes(e),dumperClass:n(283),dialect:{rangeSelect:!0,stringEscapeChar:"\\",fallbackDataType:"longtext",enableConstraintsPerTable:!1,anonymousPrimaryKey:!0,explicitDropConstraint:!0,quoteIdentifier:e=>"`"+e+"`",createColumn:!0,dropColumn:!0,changeColumn:!0,createIndex:!0,dropIndex:!0,createForeignKey:!0,dropForeignKey:!0,createPrimaryKey:!0,dropPrimaryKey:!0,dropIndexContainsTableSpec:!0,createUnique:!0,dropUnique:!0,createCheck:!0,dropCheck:!0,dropReferencesWhenDropTable:!1,columnProperties:{columnComment:!0,isUnsigned:!0,isZerofill:!0}},defaultPort:3306,getQuerySplitterOptions:()=>i,readOnlySessions:!0,supportsDatabaseDump:!0,getNewObjectTemplates:()=>[{label:"New view",sql:"CREATE VIEW myview\nAS\nSELECT * FROM table1"},{label:"New procedure",sql:"DELIMITER //\n\nCREATE PROCEDURE myproc (IN arg1 INT)\nBEGIN\n SELECT * FROM table1;\nEND\n\nDELIMITER ;"},{label:"New function",sql:"CREATE FUNCTION myfunc (arg1 INT)\nRETURNS INT DETERMINISTIC\nRETURN 1"}]},s={...a,engine:"mysql@dbgate-plugin-mysql",title:"MySQL"},o={...a,engine:"mariadb@dbgate-plugin-mysql",title:"MariaDB"};e.exports=[s,o]},function(e,t,n){const{SqlDumper:r,arrayToHexString:i}=global.DBGATE_TOOLS;n(2);e.exports=class extends r{transform(e,t){switch(e){case"GROUP:YEAR":case"YEAR":this.put("^year(%c)",t);break;case"MONTH":this.put("^month(%c)",t);break;case"DAY":this.put("^day(%c)",t);break;case"GROUP:MONTH":this.put("^date_format(%c, '%s')",t,"%Y-%m");break;case"GROUP:DAY":this.put("^date_format(%c, '%s')",t,"%Y-%m-%d");break;default:t()}}renameTable(e,t){this.putCmd("^rename ^table %f ^to %i",e,t)}changeColumn(e,t,n){this.put("^alter ^table %f ^change ^column %i %i ",e,e.columnName,t.columnName),this.columnDefinition(t),this.inlineConstraints(n),this.endCommand()}specialColumnOptions(e){e.isUnsigned&&this.put("^unsigned "),e.isZerofill&&this.put("^zerofill ")}columnDefinition(e,t){super.columnDefinition(e,t),e.columnComment&&this.put(" ^comment %v ",e.columnComment)}renameColumn(e,t){this.changeColumn(e,{...e,columnName:t},[])}enableConstraints(e,t){this.putCmd("^set FOREIGN_KEY_CHECKS = %s",t?"1":"0")}comment(e){this.put("/* %s */",e)}beginTransaction(){this.putCmd("^start ^transaction")}selectTableIntoNewTable(e,t){this.putCmd("^create ^table %f (^select * ^from %f)",t,e)}putByteArrayValue(e){this.putRaw(`unhex('${i(e)}')`)}}},function(e,t,n){const r=n(285),i=n(7),a=n(290),{DatabaseAnalyser:s}=n(53),{isTypeString:o,isTypeNumeric:u}=n(53);function _({isNullable:e,extra:t,columnName:n,dataType:r,charMaxLength:a,numericPrecision:s,numericScale:_,defaultValue:c,columnComment:d,columnType:l}){const f=i.isString(l)?l.split(" ").map(e=>e.trim().toLowerCase()):[];let h=r;return a&&o(r)&&(h=`${r}(${a})`),s&&_&&u(r)&&(h=`${r}(${s},${_})`),{notNull:!e||"NO"==e||"no"==e,autoIncrement:!(!t||!t.toLowerCase().includes("auto_increment")),columnName:n,columnComment:d,dataType:h,defaultValue:c,isUnsigned:f.includes("unsigned"),isZerofill:f.includes("zerofill")}}e.exports=class extends s{constructor(e,t,n){super(e,t,n)}createQuery(e,t){let n=a[e];return n=n.replace("#DATABASE#",this.pool._database_name),super.createQuery(n,t)}getRequestedViewNames(e){return this.getRequestedObjectPureNames("views",e)}async _computeSingleObjectId(){const{pureName:e}=this.singleObjectFilter;this.singleObjectId=e}async getViewTexts(e){const t={};for(const n of this.getRequestedViewNames(e))try{const e=await this.driver.query(this.pool,`SHOW CREATE VIEW \`${n}\``);t[n]=e.rows[0]["Create View"]}catch(e){console.log("ERROR",e),t[n]=`${e}`}return t}async _runAnalysis(){const e=await this.driver.query(this.pool,this.createQuery("tables",["tables"])),t=await this.driver.query(this.pool,this.createQuery("columns",["tables","views"])),n=await this.safeQuery(this.createQuery("primaryKeys",["tables"])),a=await this.safeQuery(this.createQuery("foreignKeys",["tables"])),o=await this.safeQuery(this.createQuery("views",["views"])),u=await this.safeQuery(this.createQuery("programmables",["procedures","functions"])),c=await this.getViewTexts(o.rows.map(e=>e.pureName)),d=await this.safeQuery(this.createQuery("indexes",["tables"])),l=await this.safeQuery(this.createQuery("uniqueNames",["tables"]));return{tables:e.rows.map(e=>({...e,objectId:e.pureName,contentHash:i.isDate(e.modifyDate)?e.modifyDate.toISOString():e.modifyDate,columns:t.rows.filter(t=>t.pureName==e.pureName).map(_),primaryKey:s.extractPrimaryKeys(e,n.rows),foreignKeys:s.extractForeignKeys(e,a.rows),tableRowCount:e.tableRowCount,indexes:i.uniqBy(d.rows.filter(t=>t.tableName==e.pureName&&!l.rows.find(e=>e.constraintName==t.constraintName)),"constraintName").map(e=>({...i.pick(e,["constraintName","indexType"]),isUnique:!e.nonUnique,columns:d.rows.filter(t=>t.tableName==e.tableName&&t.constraintName==e.constraintName).map(e=>({...i.pick(e,["columnName"])}))})),uniques:i.uniqBy(d.rows.filter(t=>t.tableName==e.pureName&&l.rows.find(e=>e.constraintName==t.constraintName)),"constraintName").map(e=>({...i.pick(e,["constraintName"]),columns:d.rows.filter(t=>t.tableName==e.tableName&&t.constraintName==e.constraintName).map(e=>({...i.pick(e,["columnName"])}))}))})),views:o.rows.map(e=>({...e,objectId:e.pureName,contentHash:i.isDate(e.modifyDate)?e.modifyDate.toISOString():e.modifyDate,columns:t.rows.filter(t=>t.pureName==e.pureName).map(_),createSql:c[e.pureName],requiresFormat:!0})),procedures:u.rows.filter(e=>"PROCEDURE"==e.objectType).map(r.omit(["objectType"])).map(e=>({...e,createSql:`DELIMITER //\n\nCREATE PROCEDURE \`${e.pureName}\`()\n${e.routineDefinition}\n\nDELIMITER ;\n`,objectId:e.pureName,contentHash:i.isDate(e.modifyDate)?e.modifyDate.toISOString():e.modifyDate})),functions:u.rows.filter(e=>"FUNCTION"==e.objectType).map(r.omit(["objectType"])).map(e=>({...e,createSql:`CREATE FUNCTION \`${e.pureName}\`()\nRETURNS ${e.returnDataType} ${"YES"==e.isDeterministic?"DETERMINISTIC":"NOT DETERMINISTIC"}\n${e.routineDefinition}`,objectId:e.pureName,contentHash:i.isDate(e.modifyDate)?e.modifyDate.toISOString():e.modifyDate}))}}async _getFastSnapshot(){const e=await this.driver.query(this.pool,this.createQuery("tableModifications")),t=await this.driver.query(this.pool,this.createQuery("procedureModifications")),n=await this.driver.query(this.pool,this.createQuery("functionModifications"));return{tables:e.rows.filter(e=>"BASE TABLE"==e.objectType).map(e=>({...e,objectId:e.pureName,contentHash:i.isDate(e.modifyDate)?e.modifyDate.toISOString():e.modifyDate,tableRowCount:e.tableRowCount})),views:e.rows.filter(e=>"VIEW"==e.objectType).map(e=>({...e,objectId:e.pureName,contentHash:i.isDate(e.modifyDate)?e.modifyDate.toISOString():e.modifyDate})),procedures:t.rows.map(e=>({contentHash:e.Modified,objectId:e.Name,pureName:e.Name})),functions:n.rows.map(e=>({contentHash:e.Modified,objectId:e.Name,pureName:e.Name}))}}}},function(e,t,n){var r=n(286).runInContext();e.exports=n(287)(r,r)},function(e,t,n){(function(e){var r;
|
|
281
|
+
e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(0))},function(e,t,n){const r=n(281);e.exports={packageName:"dbgate-plugin-mysql",drivers:r}},function(e,t,n){const r=n(7),i=n(32),a=n(282),s=n(284),o=n(47),{createBulkInsertStreamBase:u,makeUniqueColumnNames:_}=n(53),{MySqlDumper:c}=n(546);function d(e){if(e){const t=e.map(e=>({columnName:e.name}));return _(t),t}return null}function l(e,t){return r.zipObject(t.map(e=>e.columnName),e)}const f=a.map(e=>({...e,analyserClass:s,async connect({server:e,port:t,user:n,password:r,database:i,ssl:a,isReadOnly:s,forceRowsAsObjects:u}){const _=o.createConnection({host:e,port:t,user:n,password:r,database:i,ssl:a,rowsAsArray:!u,supportBigNumbers:!0,bigNumberStrings:!0,dateStrings:!0});return _._database_name=i,s&&await this.query(_,"SET SESSION TRANSACTION READ ONLY"),_},close:async e=>e.close(),query:(e,t)=>null==t?{rows:[],columns:[]}:new Promise((n,r)=>{e.query(t,(function(e,t,i){e&&r(e);const a=d(i);n({rows:t&&a&&t.map&&t.map(e=>l(e,a)),columns:a})}))}),async stream(e,t,n){const r=e.query(t);let i=[];r.on("error",e=>{console.log("ERROR",e);const{message:t,lineNumber:r,procName:i}=e;n.info({message:t,line:r,procedure:i,time:new Date,severity:"error"})}).on("fields",e=>{i=d(e),i&&n.recordset(i)}).on("result",e=>{e&&e.constructor&&"OkPacket"==e.constructor.name?n.info({message:`${e.affectedRows} rows affected`,time:new Date,severity:"info"}):i&&n.row(l(e,i))}).on("end",()=>{n.done()})},async readQuery(e,t,n){const r=e.query(t),a=new i.PassThrough({objectMode:!0,highWaterMark:100});let s=[];return r.on("error",e=>{console.error(e),a.end()}).on("fields",e=>{s=d(e),a.write({__isStreamHeader:!0,...n||{columns:s}})}).on("result",e=>a.write(l(e,s))).on("end",()=>a.end()),a},async getVersion(e){const{rows:t}=await this.query(e,"show variables like 'version'"),n=t[0].Value;if(n){const e=n.match(/(.*)-MariaDB-/);if(e)return{version:n,versionText:`MariaDB ${e[1]}`}}return{version:n,versionText:`MySQL ${n}`}},async listDatabases(e){const{rows:t}=await this.query(e,"show databases");return t.map(e=>({name:e.Database}))},async writeTable(e,t,n){return u(this,i,e,t,n)},async createBackupDumper(e,t){const{outputFile:n,databaseName:r,schemaName:i}=t;return new c({connection:e,schema:r||i,outputFile:n})}}));e.exports=f},function(e,t,n){const{driverBase:r}=global.DBGATE_TOOLS,{mysqlSplitterOptions:i}=n(52),a={...r,showConnectionField:(e,t)=>["server","port","user","password","defaultDatabase","singleDatabase","isReadOnly"].includes(e),dumperClass:n(283),dialect:{rangeSelect:!0,stringEscapeChar:"\\",fallbackDataType:"longtext",enableConstraintsPerTable:!1,anonymousPrimaryKey:!0,explicitDropConstraint:!0,quoteIdentifier:e=>"`"+e+"`",createColumn:!0,dropColumn:!0,changeColumn:!0,createIndex:!0,dropIndex:!0,createForeignKey:!0,dropForeignKey:!0,createPrimaryKey:!0,dropPrimaryKey:!0,dropIndexContainsTableSpec:!0,createUnique:!0,dropUnique:!0,createCheck:!0,dropCheck:!0,dropReferencesWhenDropTable:!1,columnProperties:{columnComment:!0,isUnsigned:!0,isZerofill:!0},predefinedDataTypes:["char(20)","varchar(250)","binary(250)","varbinary(250)","tinyblob","tinytext","text(1000)","blob(1000)","mediumtext","mediumblob","longtext","longblob","enum(val1,val2,val3)","set(val1,val2,val3)","bit(32)","tinyint","bool","smallint","mediumint","int","bigint","float","double","decimal","date","datetime","timestamp","time","year"]},defaultPort:3306,getQuerySplitterOptions:()=>i,readOnlySessions:!0,supportsDatabaseDump:!0,getNewObjectTemplates:()=>[{label:"New view",sql:"CREATE VIEW myview\nAS\nSELECT * FROM table1"},{label:"New procedure",sql:"DELIMITER //\n\nCREATE PROCEDURE myproc (IN arg1 INT)\nBEGIN\n SELECT * FROM table1;\nEND\n\nDELIMITER ;"},{label:"New function",sql:"CREATE FUNCTION myfunc (arg1 INT)\nRETURNS INT DETERMINISTIC\nRETURN 1"}]},s={...a,engine:"mysql@dbgate-plugin-mysql",title:"MySQL"},o={...a,engine:"mariadb@dbgate-plugin-mysql",title:"MariaDB"};e.exports=[s,o]},function(e,t,n){const{SqlDumper:r,arrayToHexString:i}=global.DBGATE_TOOLS;n(2);e.exports=class extends r{transform(e,t){switch(e){case"GROUP:YEAR":case"YEAR":this.put("^year(%c)",t);break;case"MONTH":this.put("^month(%c)",t);break;case"DAY":this.put("^day(%c)",t);break;case"GROUP:MONTH":this.put("^date_format(%c, '%s')",t,"%Y-%m");break;case"GROUP:DAY":this.put("^date_format(%c, '%s')",t,"%Y-%m-%d");break;default:t()}}renameTable(e,t){this.putCmd("^rename ^table %f ^to %i",e,t)}changeColumn(e,t,n){this.put("^alter ^table %f ^change ^column %i %i ",e,e.columnName,t.columnName),this.columnDefinition(t),this.inlineConstraints(n),this.endCommand()}specialColumnOptions(e){e.isUnsigned&&this.put("^unsigned "),e.isZerofill&&this.put("^zerofill ")}columnDefinition(e,t){super.columnDefinition(e,t),e.columnComment&&this.put(" ^comment %v ",e.columnComment)}renameColumn(e,t){this.changeColumn(e,{...e,columnName:t},[])}enableConstraints(e,t){this.putCmd("^set FOREIGN_KEY_CHECKS = %s",t?"1":"0")}comment(e){this.put("/* %s */",e)}beginTransaction(){this.putCmd("^start ^transaction")}selectTableIntoNewTable(e,t){this.putCmd("^create ^table %f (^select * ^from %f)",t,e)}putByteArrayValue(e){this.putRaw(`unhex('${i(e)}')`)}}},function(e,t,n){const r=n(285),i=n(7),a=n(290),{DatabaseAnalyser:s}=n(53),{isTypeString:o,isTypeNumeric:u}=n(53);function _({isNullable:e,extra:t,columnName:n,dataType:r,charMaxLength:a,numericPrecision:s,numericScale:_,defaultValue:c,columnComment:d,columnType:l}){const f=i.isString(l)?l.split(" ").map(e=>e.trim().toLowerCase()):[];let h=r;return a&&o(r)&&(h=`${r}(${a})`),s&&_&&u(r)&&(h=`${r}(${s},${_})`),{notNull:!e||"NO"==e||"no"==e,autoIncrement:!(!t||!t.toLowerCase().includes("auto_increment")),columnName:n,columnComment:d,dataType:h,defaultValue:c,isUnsigned:f.includes("unsigned"),isZerofill:f.includes("zerofill")}}e.exports=class extends s{constructor(e,t,n){super(e,t,n)}createQuery(e,t){let n=a[e];return n=n.replace("#DATABASE#",this.pool._database_name),super.createQuery(n,t)}getRequestedViewNames(e){return this.getRequestedObjectPureNames("views",e)}async _computeSingleObjectId(){const{pureName:e}=this.singleObjectFilter;this.singleObjectId=e}async getViewTexts(e){const t={};for(const n of this.getRequestedViewNames(e))try{const e=await this.driver.query(this.pool,`SHOW CREATE VIEW \`${n}\``);t[n]=e.rows[0]["Create View"]}catch(e){console.log("ERROR",e),t[n]=`${e}`}return t}async _runAnalysis(){const e=await this.driver.query(this.pool,this.createQuery("tables",["tables"])),t=await this.driver.query(this.pool,this.createQuery("columns",["tables","views"])),n=await this.safeQuery(this.createQuery("primaryKeys",["tables"])),a=await this.safeQuery(this.createQuery("foreignKeys",["tables"])),o=await this.safeQuery(this.createQuery("views",["views"])),u=await this.safeQuery(this.createQuery("programmables",["procedures","functions"])),c=await this.getViewTexts(o.rows.map(e=>e.pureName)),d=await this.safeQuery(this.createQuery("indexes",["tables"])),l=await this.safeQuery(this.createQuery("uniqueNames",["tables"]));return{tables:e.rows.map(e=>({...e,objectId:e.pureName,contentHash:i.isDate(e.modifyDate)?e.modifyDate.toISOString():e.modifyDate,columns:t.rows.filter(t=>t.pureName==e.pureName).map(_),primaryKey:s.extractPrimaryKeys(e,n.rows),foreignKeys:s.extractForeignKeys(e,a.rows),tableRowCount:e.tableRowCount,indexes:i.uniqBy(d.rows.filter(t=>t.tableName==e.pureName&&!l.rows.find(e=>e.constraintName==t.constraintName)),"constraintName").map(e=>({...i.pick(e,["constraintName","indexType"]),isUnique:!e.nonUnique,columns:d.rows.filter(t=>t.tableName==e.tableName&&t.constraintName==e.constraintName).map(e=>({...i.pick(e,["columnName"])}))})),uniques:i.uniqBy(d.rows.filter(t=>t.tableName==e.pureName&&l.rows.find(e=>e.constraintName==t.constraintName)),"constraintName").map(e=>({...i.pick(e,["constraintName"]),columns:d.rows.filter(t=>t.tableName==e.tableName&&t.constraintName==e.constraintName).map(e=>({...i.pick(e,["columnName"])}))}))})),views:o.rows.map(e=>({...e,objectId:e.pureName,contentHash:i.isDate(e.modifyDate)?e.modifyDate.toISOString():e.modifyDate,columns:t.rows.filter(t=>t.pureName==e.pureName).map(_),createSql:c[e.pureName],requiresFormat:!0})),procedures:u.rows.filter(e=>"PROCEDURE"==e.objectType).map(r.omit(["objectType"])).map(e=>({...e,createSql:`DELIMITER //\n\nCREATE PROCEDURE \`${e.pureName}\`()\n${e.routineDefinition}\n\nDELIMITER ;\n`,objectId:e.pureName,contentHash:i.isDate(e.modifyDate)?e.modifyDate.toISOString():e.modifyDate})),functions:u.rows.filter(e=>"FUNCTION"==e.objectType).map(r.omit(["objectType"])).map(e=>({...e,createSql:`CREATE FUNCTION \`${e.pureName}\`()\nRETURNS ${e.returnDataType} ${"YES"==e.isDeterministic?"DETERMINISTIC":"NOT DETERMINISTIC"}\n${e.routineDefinition}`,objectId:e.pureName,contentHash:i.isDate(e.modifyDate)?e.modifyDate.toISOString():e.modifyDate}))}}async _getFastSnapshot(){const e=await this.driver.query(this.pool,this.createQuery("tableModifications")),t=await this.driver.query(this.pool,this.createQuery("procedureModifications")),n=await this.driver.query(this.pool,this.createQuery("functionModifications"));return{tables:e.rows.filter(e=>"BASE TABLE"==e.objectType).map(e=>({...e,objectId:e.pureName,contentHash:i.isDate(e.modifyDate)?e.modifyDate.toISOString():e.modifyDate,tableRowCount:e.tableRowCount})),views:e.rows.filter(e=>"VIEW"==e.objectType).map(e=>({...e,objectId:e.pureName,contentHash:i.isDate(e.modifyDate)?e.modifyDate.toISOString():e.modifyDate})),procedures:t.rows.map(e=>({contentHash:e.Modified,objectId:e.Name,pureName:e.Name})),functions:n.rows.map(e=>({contentHash:e.Modified,objectId:e.Name,pureName:e.Name}))}}}},function(e,t,n){var r=n(286).runInContext();e.exports=n(287)(r,r)},function(e,t,n){(function(e){var r;
|
|
282
282
|
/**
|
|
283
283
|
* @license
|
|
284
284
|
* Lodash <https://lodash.com/>
|
package/dist/frontend.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var plugin=function(
|
|
1
|
+
var plugin=function(t){var e={};function n(i){if(e[i])return e[i].exports;var s=e[i]={i:i,l:!1,exports:{}};return t[i].call(s.exports,s,s.exports,n),s.l=!0,s.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var s in t)n.d(i,s,function(e){return t[e]}.bind(null,s));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=1)}([function(t,e,n){const{driverBase:i}=window.DBGATE_TOOLS,{mysqlSplitterOptions:s}=n(2),r={...i,showConnectionField:(t,e)=>["server","port","user","password","defaultDatabase","singleDatabase","isReadOnly"].includes(t),dumperClass:n(3),dialect:{rangeSelect:!0,stringEscapeChar:"\\",fallbackDataType:"longtext",enableConstraintsPerTable:!1,anonymousPrimaryKey:!0,explicitDropConstraint:!0,quoteIdentifier:t=>"`"+t+"`",createColumn:!0,dropColumn:!0,changeColumn:!0,createIndex:!0,dropIndex:!0,createForeignKey:!0,dropForeignKey:!0,createPrimaryKey:!0,dropPrimaryKey:!0,dropIndexContainsTableSpec:!0,createUnique:!0,dropUnique:!0,createCheck:!0,dropCheck:!0,dropReferencesWhenDropTable:!1,columnProperties:{columnComment:!0,isUnsigned:!0,isZerofill:!0},predefinedDataTypes:["char(20)","varchar(250)","binary(250)","varbinary(250)","tinyblob","tinytext","text(1000)","blob(1000)","mediumtext","mediumblob","longtext","longblob","enum(val1,val2,val3)","set(val1,val2,val3)","bit(32)","tinyint","bool","smallint","mediumint","int","bigint","float","double","decimal","date","datetime","timestamp","time","year"]},defaultPort:3306,getQuerySplitterOptions:()=>s,readOnlySessions:!0,supportsDatabaseDump:!0,getNewObjectTemplates:()=>[{label:"New view",sql:"CREATE VIEW myview\nAS\nSELECT * FROM table1"},{label:"New procedure",sql:"DELIMITER //\n\nCREATE PROCEDURE myproc (IN arg1 INT)\nBEGIN\n SELECT * FROM table1;\nEND\n\nDELIMITER ;"},{label:"New function",sql:"CREATE FUNCTION myfunc (arg1 INT)\nRETURNS INT DETERMINISTIC\nRETURN 1"}]},l={...r,engine:"mysql@dbgate-plugin-mysql",title:"MySQL"},a={...r,engine:"mariadb@dbgate-plugin-mysql",title:"MariaDB"};t.exports=[l,a]},function(t,e,n){"use strict";n.r(e);var i=n(0),s=n.n(i);e.default={packageName:"dbgate-plugin-mysql",drivers:s()}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.redisSplitterOptions=e.noSplitSplitterOptions=e.mongoSplitterOptions=e.sqliteSplitterOptions=e.postgreSplitterOptions=e.mssqlSplitterOptions=e.mysqlSplitterOptions=e.defaultSplitterOptions=void 0,e.defaultSplitterOptions={stringsBegins:["'"],stringsEnds:{"'":"'"},stringEscapes:{"'":"'"},allowSemicolon:!0,allowCustomDelimiter:!1,allowGoDelimiter:!1,allowDollarDollarString:!1,noSplit:!1,doubleDashComments:!0,multilineComments:!0,javaScriptComments:!1,returnRichInfo:!1,splitByLines:!1},e.mysqlSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{allowCustomDelimiter:!0,stringsBegins:["'","`"],stringsEnds:{"'":"'","`":"`"},stringEscapes:{"'":"\\","`":"`"}}),e.mssqlSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{allowSemicolon:!1,allowGoDelimiter:!0,stringsBegins:["'","["],stringsEnds:{"'":"'","[":"]"},stringEscapes:{"'":"'"}}),e.postgreSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{allowDollarDollarString:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),e.sqliteSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),e.mongoSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"\\",'"':"\\"}}),e.noSplitSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{noSplit:!0}),e.redisSplitterOptions=Object.assign(Object.assign({},e.defaultSplitterOptions),{splitByLines:!0})},function(t,e,n){const{SqlDumper:i,arrayToHexString:s}=window.DBGATE_TOOLS;n(4);t.exports=class extends i{transform(t,e){switch(t){case"GROUP:YEAR":case"YEAR":this.put("^year(%c)",e);break;case"MONTH":this.put("^month(%c)",e);break;case"DAY":this.put("^day(%c)",e);break;case"GROUP:MONTH":this.put("^date_format(%c, '%s')",e,"%Y-%m");break;case"GROUP:DAY":this.put("^date_format(%c, '%s')",e,"%Y-%m-%d");break;default:e()}}renameTable(t,e){this.putCmd("^rename ^table %f ^to %i",t,e)}changeColumn(t,e,n){this.put("^alter ^table %f ^change ^column %i %i ",t,t.columnName,e.columnName),this.columnDefinition(e),this.inlineConstraints(n),this.endCommand()}specialColumnOptions(t){t.isUnsigned&&this.put("^unsigned "),t.isZerofill&&this.put("^zerofill ")}columnDefinition(t,e){super.columnDefinition(t,e),t.columnComment&&this.put(" ^comment %v ",t.columnComment)}renameColumn(t,e){this.changeColumn(t,{...t,columnName:e},[])}enableConstraints(t,e){this.putCmd("^set FOREIGN_KEY_CHECKS = %s",e?"1":"0")}comment(t){this.put("/* %s */",t)}beginTransaction(){this.putCmd("^start ^transaction")}selectTableIntoNewTable(t,e){this.putCmd("^create ^table %f (^select * ^from %f)",e,t)}putByteArrayValue(t){this.putRaw(`unhex('${s(t)}')`)}}},function(t,e){var n=Array.isArray;t.exports=n}]);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dbgate-plugin-mysql",
|
|
3
3
|
"main": "dist/backend.js",
|
|
4
|
-
"version": "5.0.
|
|
4
|
+
"version": "5.0.2",
|
|
5
5
|
"homepage": "https://dbgate.org",
|
|
6
6
|
"description": "MySQL connect plugin for DbGate",
|
|
7
7
|
"repository": {
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"antares-mysql-dumper": "^0.0.1",
|
|
35
35
|
"dbgate-plugin-tools": "^1.0.7",
|
|
36
36
|
"dbgate-query-splitter": "^4.9.0",
|
|
37
|
-
"dbgate-tools": "^5.0.
|
|
37
|
+
"dbgate-tools": "^5.0.2",
|
|
38
38
|
"mysql2": "^2.2.5",
|
|
39
39
|
"webpack": "^4.42.0",
|
|
40
40
|
"webpack-cli": "^3.3.11"
|