dbgate-plugin-sqlite 6.6.11 → 6.7.0
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/package.json +2 -2
package/dist/backend.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var e={994:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.firebirdSplitterOptions=t.oracleSplitterOptions=t.redisSplitterOptions=t.noSplitSplitterOptions=t.mongoSplitterOptions=t.sqliteSplitterOptions=t.postgreSplitterOptions=t.mssqlSplitterOptions=t.mysqlSplitterOptions=t.defaultSplitterOptions=void 0,t.defaultSplitterOptions={stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'},allowSemicolon:!0,allowCustomDelimiter:!1,allowCustomSqlTerminator:!1,allowGoDelimiter:!1,allowSlashDelimiter:!1,allowDollarDollarString:!1,noSplit:!1,skipSeparatorBeginEnd:!1,doubleDashComments:!0,multilineComments:!0,javaScriptComments:!1,returnRichInfo:!1,splitByLines:!1,splitByEmptyLine:!1,preventSingleLineSplit:!1,adaptiveGoSplit:!1,ignoreComments:!1,copyFromStdin:!1,queryParameterStyle:null},t.mysqlSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowCustomDelimiter:!0,stringsBegins:["'","`",'"'],stringsEnds:{"'":"'","`":"`",'"':'"'},stringEscapes:{"'":"\\","`":"`",'"':"\\"}}),t.mssqlSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowSemicolon:!1,allowGoDelimiter:!0,stringsBegins:["'","["],stringsEnds:{"'":"'","[":"]"},stringEscapes:{"'":"'"}}),t.postgreSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowDollarDollarString:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),t.sqliteSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{skipSeparatorBeginEnd:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),t.mongoSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"\\",'"':"\\"}}),t.noSplitSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{noSplit:!0}),t.redisSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{splitByLines:!0}),t.oracleSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowCustomSqlTerminator:!0,allowSlashDelimiter:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),t.firebirdSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{skipSeparatorBeginEnd:!0,queryParameterStyle:":"})},688:(e,t,n)=>{const s=n(825),{DatabaseAnalyser:a}=global.DBGATE_PACKAGES["dbgate-tools"],r=n(926);e.exports=class extends a{constructor(e,t,n){super(e,t,n)}async _computeSingleObjectId(){const{pureName:e}=this.singleObjectFilter;this.singleObjectId=e}async _getFastSnapshot(){const e=await this.driver.query(this.dbhan,r.objects),t=await this.driver.query(this.dbhan,r.indexcols);return{tables:e.rows.filter((e=>"table"==e.type)).map((e=>({pureName:e.name,objectId:e.name,contentHash:[e.sql,...t.rows.filter((t=>t.tableName==e.name)).map((e=>`-- ${e.constraintName}: ${e.columnName}`))].join(";\n")}))),views:e.rows.filter((e=>"view"==e.type)).map((e=>({pureName:e.name,objectId:e.name,contentHash:e.sql})))}}async _runAnalysis(){const e=await this.analyserQuery(r.objectsConditioned,["tables","views"]),t=e.rows.filter((e=>"table"==e.type)),n=e.rows.filter((e=>"view"==e.type)),a=s.zipObject(t.map((e=>e.name)),t.map((e=>e.sql))),i=t.map((e=>({pureName:e.name,objectId:e.name,contentHash:e.sql}))),o=n.map((e=>({pureName:e.name,objectId:e.name,contentHash:e.sql,createSql:e.sql}))),l=await this.driver.query(this.dbhan,r.indexcols);for(const e of this.getRequestedObjectPureNames("tables",t.map((e=>e.name)))){const t=i.find((t=>t.pureName==e));if(!t)continue;const n=await this.driver.query(this.dbhan,`pragma table_info('${e}')`);t.columns=n.rows.map((t=>({columnName:t.name,dataType:t.type,notNull:!!t.notnull,defaultValue:null==t.dflt_value?void 0:t.dflt_value,autoIncrement:a[e].toLowerCase().includes("autoincrement")&&!!t.pk})));const r=s.uniq(l.rows.filter((t=>t.tableName==e&&"c"==t.origin)).map((e=>e.constraintName)));t.indexes=r.map((t=>({constraintName:t,isUnique:!!l.rows.find((n=>n.tableName==e&&n.constraintName==t)).isUnique,columns:l.rows.filter((n=>n.tableName==e&&n.constraintName==t)).map((({columnName:e})=>({columnName:e})))})));const o=s.uniq(l.rows.filter((t=>t.tableName==e&&"u"==t.origin)).map((e=>e.constraintName)));t.uniques=o.map((t=>({constraintName:t,columns:l.rows.filter((n=>n.tableName==e&&n.constraintName==t)).map((({columnName:e})=>({columnName:e})))})));const c=n.rows.filter((e=>e.pk)).map((e=>({columnName:e.name})));c.length>0&&(t.primaryKey={columns:c});const p=await this.driver.query(this.dbhan,`pragma foreign_key_list('${e}')`);t.foreignKeys=s.values(s.groupBy(p.rows,"id")).map((t=>{const n=t[0];return{pureName:e,refTableName:n.table,columns:t.map((e=>({columnName:e.from,refColumnName:e.to}))),updateAction:n.on_update,deleteAction:n.on_delete,constraintName:`FK_${e}_${n.id}`}}))}for(const e of this.getRequestedObjectPureNames("views",n.map((e=>e.name)))){const t=o.find((t=>t.pureName==e));if(!t)continue;const n=await this.driver.query(this.dbhan,`pragma table_info('${e}')`);t.columns=n.rows.map((e=>({columnName:e.name,dataType:e.type,notNull:!!e.notnull})))}return{tables:i,views:o,triggers:(await this.driver.query(this.dbhan,r.triggers)).rows}}}},344:(e,t,n)=>{n(825);const s=n(203),a=n(293),r=n(688),{splitQuery:i,sqliteSplitterOptions:o}=n(660),{runStreamItem:l,waitForDrain:c}=n(920),{getLogger:p,createBulkInsertStreamBase:m,extractErrorLogData:u}=global.DBGATE_PACKAGES["dbgate-tools"],d=p("sqliteDriver");let g;const y={...a[1],analyserClass:r,async connect({databaseFile:e,isReadOnly:t,authToken:s,databaseUrl:a,...r}){const i=(g||(g=n(281)),g);return{client:e?new i(e,{readonly:!!t}):new i(a,{authToken:s,readonly:!!t})}},async close(e){e.client.close()},async query(e,t){const n=e.client.prepare(t),s=n.all(),a=n.columns();var r;return{rows:s,columns:(a.length>0?a:(r=s[0])?Object.keys(r).map((e=>({columnName:e}))):[]).map((e=>({columnName:e.name,dataType:e.type})))}},async stream(e,t,n){const s=i(t,o),a={count:0,date:null};console.log("#stream",t);const r=e.client.transaction((()=>{for(const t of s)l(e,t,n,a);a.date&&n.info({message:`${a.count} rows affected`,time:new Date,severity:"info",rowsAffected:a.count})}));try{r()}catch(e){d.error(u(e),"DBGM-00202 Stream error");const{message:t,procName:s}=e;n.info({message:t,line:0,procedure:s,time:new Date,severity:"error"})}n.done()},async script(e,t,{useTransaction:n}={}){const s=()=>{for(const n of i(t,this.getQuerySplitterOptions("script")))e.client.prepare(n).run()};n?e.client.transaction((()=>{s()}))():s()},async readQueryTask(e,t){for(const n of e.iterate())t.write(n)||await c(t);t.end()},async readQuery(e,t,n){const a=new s.PassThrough({objectMode:!0,highWaterMark:100}),r=e.client.prepare(t),i=r.columns();return a.write({__isStreamHeader:!0,...n||{columns:i.map((e=>({columnName:e.name,dataType:e.type})))}}),this.readQueryTask(r,a),a},async writeTable(e,t,n){return m(this,s,e,t,n)},async getVersion(e){const{rows:t}=await this.query(e,"select sqlite_version() as version"),{version:n}=t[0];return{version:n,versionText:`SQLite ${n}`}},getAuthTypes:()=>[{title:"File",name:"file",disabledFields:["databaseUrl","authToken"]},{title:"URL",name:"url",disabledFields:["databaseFile"]}]};e.exports=y},317:(e,t,n)=>{n(825);const s=n(203),a=n(688),r=n(293),{splitQuery:i,sqliteSplitterOptions:o}=n(660),{getLogger:l,createBulkInsertStreamBase:c,extractErrorLogData:p}=global.DBGATE_PACKAGES["dbgate-tools"],{runStreamItem:m,waitForDrain:u}=n(920),d=l("sqliteDriver");let g;const y={...r[0],analyserClass:a,connect:async({databaseFile:e,isReadOnly:t})=>({client:new(g||(g=n(550)),g)(e,{readonly:!!t})}),async close(e){e.client.close()},async query(e,t){const n=e.client.prepare(t);if(n.reader){const e=n.columns();return{rows:n.all(),columns:e.map((e=>({columnName:e.name,dataType:e.type})))}}return n.run(),{rows:[],columns:[]}},async stream(e,t,n){const s=i(t,o),a={count:0,date:null},r=e.client.transaction((()=>{for(const t of s)m(e,t,n,a);a.date&&n.info({message:`${a.count} rows affected`,time:new Date,severity:"info",rowsAffected:a.count})}));try{r()}catch(e){d.error(p(e),"DBGM-00203 Stream error");const{message:t,procName:s}=e;n.info({message:t,line:0,procedure:s,time:new Date,severity:"error"})}n.done()},async script(e,t){e.client.transaction((()=>{for(const n of i(t,this.getQuerySplitterOptions("script")))e.client.prepare(n).run()}))()},async readQueryTask(e,t){for(const n of e.iterate())t.write(n)||await u(t);t.end()},async readQuery(e,t,n){const a=new s.PassThrough({objectMode:!0,highWaterMark:100}),r=e.client.prepare(t),i=r.columns();return a.write({__isStreamHeader:!0,...n||{columns:i.map((e=>({columnName:e.name,dataType:e.type})))}}),this.readQueryTask(r,a),a},async writeTable(e,t,n){return c(this,s,e,t,n)},async getVersion(e){const{rows:t}=await this.query(e,"select sqlite_version() as version"),{version:n}=t[0];return{version:n,versionText:`SQLite ${n}`}}};e.exports=y},378:(e,t,n)=>{const s=[n(317),n(344)];s.initialize=e=>{},e.exports=s},920:e=>{e.exports={runStreamItem:function(e,t,n,s){const a=e.client.prepare(t);if(console.log(a),console.log(a.reader),a.reader){const e=a.columns();n.recordset(e.map((e=>({columnName:e.name,dataType:e.type}))));for(const e of a.iterate())n.row(e)}else{const e=a.run();s.count+=e.changes,s.date||(s.date=(new Date).getTime()),(new Date).getTime()-s.date>1e3&&(n.info({message:`${s.count} rows affected`,time:new Date,severity:"info",rowsAffected:s.count}),s.count=0,s.date=null)}},waitForDrain:async function(e){return new Promise((t=>{e.once("drain",(()=>{t()}))}))}}},237:(e,t,n)=>{const s=n(378);e.exports={packageName:"dbgate-plugin-sqlite",drivers:s,initialize(e){s.initialize(e)}}},926:(e,t,n)=>{const s=n(950),a=n(556),r=n(689),i=n(377);e.exports={objects:s,objectsConditioned:a,indexcols:r,triggers:i}},689:e=>{e.exports="\nSELECT \n m.name as tableName,\n il.name as constraintName,\n il.\"unique\" as isUnique,\n ii.name as columnName,\n il.origin\n FROM sqlite_schema AS m,\n pragma_index_list(m.name) AS il,\n pragma_index_info(il.name) AS ii\n WHERE m.type='table' AND il.origin <> 'pk'\n ORDER BY ii.seqno, il.name\n \n"},950:e=>{e.exports="\nselect * from sqlite_master where (type='table' or type='view')\n"},556:e=>{e.exports="\nselect * from sqlite_master where (type='table' or type='view') and name =OBJECT_ID_CONDITION\n"},377:e=>{e.exports="\nSELECT \n rowid AS objectId,\n name AS pureName,\n CASE \n WHEN sql LIKE '% AFTER %' THEN 'AFTER'\n WHEN sql LIKE '% BEFORE %' THEN 'BEFORE'\n WHEN sql LIKE '% INSTEAD OF %' THEN 'INSTEAD OF'\n ELSE 'UNKNOWN'\n END AS triggerTiming,\n CASE \n WHEN sql LIKE '% INSERT %' THEN 'INSERT'\n WHEN sql LIKE '% UPDATE %' THEN 'UPDATE'\n WHEN sql LIKE '% DELETE %' THEN 'DELETE'\n ELSE NULL\n END AS eventType,\n tbl_name AS tableName,\n sql AS createSql\nFROM \n sqlite_master\nWHERE \n type = 'trigger';\n"},197:e=>{const{SqlDumper:t,arrayToHexString:n}=global.DBGATE_PACKAGES["dbgate-tools"];e.exports=class extends t{renameColumn(e,t){this.putCmd("^alter ^table %f ^rename ^column %i ^to %i",e,e.columnName,t)}renameTable(e,t){this.putCmd("^alter ^table %f ^rename ^to %i",e,t)}putByteArrayValue(e){this.putRaw(`x'${n(e)}'`)}truncateTable(e){this.putCmd("^delete ^from %f",e)}selectScopeIdentity(){this.put("^select last_insert_rowid()")}columnDefinition(e,t){e.dataType&&e.dataType.toLowerCase().includes("int")&&e.notNull&&e.autoIncrement?this.put("^integer ^primary ^key ^autoincrement"):super.columnDefinition(e,t)}createTablePrimaryKeyCore(e){const t=e.columns.find((e=>e.autoIncrement));t&&t.dataType&&t.dataType.toLowerCase().includes("int")&&t.notNull||super.createTablePrimaryKeyCore(e)}enableAllForeignKeys(e){this.putCmd("^pragma ^foreign_keys = %s",e?"on":"off")}}},293:(e,t,n)=>{const{driverBase:s}=global.DBGATE_PACKAGES["dbgate-tools"],a=n(197),{sqliteSplitterOptions:r,noSplitSplitterOptions:i}=n(994);function o(e){if(!e)return e;const t=e.match(/[\/]([^\/]+)$/);return t?t[1]:e}const l={...s,dumperClass:a,dialect:{limitSelect:!0,rangeSelect:!0,offsetFetchRangeSyntax:!1,explicitDropConstraint:!0,stringEscapeChar:"'",fallbackDataType:"nvarchar",allowMultipleValuesInsert:!0,dropColumnDependencies:["indexes","primaryKey","uniques"],quoteIdentifier:e=>`[${e}]`,anonymousPrimaryKey:!0,requireStandaloneSelectForScopeIdentity:!0,createColumn:!0,dropColumn:!0,createIndex:!0,dropIndex:!0,createForeignKey:!1,enableForeignKeyChecks:!1,dropForeignKey:!1,createPrimaryKey:!1,dropPrimaryKey:!1,dropReferencesWhenDropTable:!1,filteredIndexes:!0,anonymousForeignKey:!0},readOnlySessions:!0,supportsTransactions:!0,getQuerySplitterOptions:e=>"editor"==e?{...r,ignoreComments:!0,preventSingleLineSplit:!0}:"stream"==e?i:r,showConnectionTab:e=>!1,predefinedDataTypes:["integer","real","text","blob"]},c={...l,engine:"sqlite@dbgate-plugin-sqlite",title:"SQLite",showConnectionField:(e,t)=>"databaseFile"==e||"isReadOnly"==e,beforeConnectionSave:e=>({...e,singleDatabase:!0,defaultDatabase:o(e.databaseFile)})},p={...l,engine:"libsql@dbgate-plugin-sqlite",title:"LibSQL",authTypeLabel:"Target type",authTypeFirst:!0,premiumOnly:!0,showConnectionField:(e,t)=>"url"===(t?.authType??"url")?["databaseUrl","authToken","isReadOnly","authType"].includes(e):!!["databaseFile","isReadOnly"].includes(e)||"authType"==e,defaultAuthTypeName:"url",beforeConnectionSave:e=>({...e,singleDatabase:!0,defaultDatabase:o(e.databaseFile||e.databaseUrl)})};e.exports=[c,p]},550:e=>{"use strict";e.exports=require("better-sqlite3")},660:e=>{"use strict";e.exports=require("dbgate-query-splitter")},281:e=>{"use strict";e.exports=require("libsql")},825:e=>{"use strict";e.exports=require("lodash")},203:e=>{"use strict";e.exports=require("stream")}},t={},n=function n(s){var a=t[s];if(void 0!==a)return a.exports;var r=t[s]={exports:{}};return e[s](r,r.exports,n),r.exports}(237);module.exports=n})();
|
|
1
|
+
(()=>{var e={994:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.firebirdSplitterOptions=t.oracleSplitterOptions=t.redisSplitterOptions=t.noSplitSplitterOptions=t.mongoSplitterOptions=t.sqliteSplitterOptions=t.postgreSplitterOptions=t.mssqlSplitterOptions=t.mysqlSplitterOptions=t.defaultSplitterOptions=void 0,t.defaultSplitterOptions={stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'},allowSemicolon:!0,allowCustomDelimiter:!1,allowCustomSqlTerminator:!1,allowGoDelimiter:!1,allowSlashDelimiter:!1,allowDollarDollarString:!1,noSplit:!1,skipSeparatorBeginEnd:!1,doubleDashComments:!0,multilineComments:!0,javaScriptComments:!1,returnRichInfo:!1,splitByLines:!1,splitByEmptyLine:!1,preventSingleLineSplit:!1,adaptiveGoSplit:!1,ignoreComments:!1,copyFromStdin:!1,queryParameterStyle:null},t.mysqlSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowCustomDelimiter:!0,stringsBegins:["'","`",'"'],stringsEnds:{"'":"'","`":"`",'"':'"'},stringEscapes:{"'":"\\","`":"`",'"':"\\"}}),t.mssqlSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowSemicolon:!1,allowGoDelimiter:!0,stringsBegins:["'","["],stringsEnds:{"'":"'","[":"]"},stringEscapes:{"'":"'"}}),t.postgreSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowDollarDollarString:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),t.sqliteSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{skipSeparatorBeginEnd:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),t.mongoSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"\\",'"':"\\"}}),t.noSplitSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{noSplit:!0}),t.redisSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{splitByLines:!0}),t.oracleSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{allowCustomSqlTerminator:!0,allowSlashDelimiter:!0,stringsBegins:["'",'"'],stringsEnds:{"'":"'",'"':'"'},stringEscapes:{"'":"'",'"':'"'}}),t.firebirdSplitterOptions=Object.assign(Object.assign({},t.defaultSplitterOptions),{skipSeparatorBeginEnd:!0,queryParameterStyle:":"})},688:(e,t,n)=>{const s=n(825),{DatabaseAnalyser:a}=global.DBGATE_PACKAGES["dbgate-tools"],r=n(926);e.exports=class extends a{constructor(e,t,n){super(e,t,n)}async _computeSingleObjectId(){const{pureName:e}=this.singleObjectFilter;this.singleObjectId=e}async _getFastSnapshot(){const e=await this.driver.query(this.dbhan,r.objects),t=await this.driver.query(this.dbhan,r.indexcols);return{tables:e.rows.filter((e=>"table"==e.type)).map((e=>({pureName:e.name,objectId:e.name,contentHash:[e.sql,...t.rows.filter((t=>t.tableName==e.name)).map((e=>`-- ${e.constraintName}: ${e.columnName}`))].join(";\n")}))),views:e.rows.filter((e=>"view"==e.type)).map((e=>({pureName:e.name,objectId:e.name,contentHash:e.sql})))}}async _runAnalysis(){const e=await this.analyserQuery(r.objectsConditioned,["tables","views"]),t=e.rows.filter((e=>"table"==e.type)),n=e.rows.filter((e=>"view"==e.type)),a=s.zipObject(t.map((e=>e.name)),t.map((e=>e.sql))),i=t.map((e=>({pureName:e.name,objectId:e.name,contentHash:e.sql}))),o=n.map((e=>({pureName:e.name,objectId:e.name,contentHash:e.sql,createSql:e.sql}))),l=await this.driver.query(this.dbhan,r.indexcols);for(const e of this.getRequestedObjectPureNames("tables",t.map((e=>e.name)))){const t=i.find((t=>t.pureName==e));if(!t)continue;const n=await this.driver.query(this.dbhan,`pragma table_info('${e}')`);t.columns=n.rows.map((t=>({columnName:t.name,dataType:t.type,notNull:!!t.notnull,defaultValue:null==t.dflt_value?void 0:t.dflt_value,autoIncrement:a[e].toLowerCase().includes("autoincrement")&&!!t.pk})));const r=s.uniq(l.rows.filter((t=>t.tableName==e&&"c"==t.origin)).map((e=>e.constraintName)));t.indexes=r.map((t=>({constraintName:t,isUnique:!!l.rows.find((n=>n.tableName==e&&n.constraintName==t)).isUnique,columns:l.rows.filter((n=>n.tableName==e&&n.constraintName==t)).map((({columnName:e})=>({columnName:e})))})));const o=s.uniq(l.rows.filter((t=>t.tableName==e&&"u"==t.origin)).map((e=>e.constraintName)));t.uniques=o.map((t=>({constraintName:t,columns:l.rows.filter((n=>n.tableName==e&&n.constraintName==t)).map((({columnName:e})=>({columnName:e})))})));const c=n.rows.filter((e=>e.pk)).map((e=>({columnName:e.name})));c.length>0&&(t.primaryKey={columns:c});const p=await this.driver.query(this.dbhan,`pragma foreign_key_list('${e}')`);t.foreignKeys=s.values(s.groupBy(p.rows,"id")).map((t=>{const n=t[0];return{pureName:e,refTableName:n.table,columns:t.map((e=>({columnName:e.from,refColumnName:e.to}))),updateAction:n.on_update,deleteAction:n.on_delete,constraintName:`FK_${e}_${n.id}`}}))}for(const e of this.getRequestedObjectPureNames("views",n.map((e=>e.name)))){const t=o.find((t=>t.pureName==e));if(!t)continue;const n=await this.driver.query(this.dbhan,`pragma table_info('${e}')`);t.columns=n.rows.map((e=>({columnName:e.name,dataType:e.type,notNull:!!e.notnull})))}return{tables:i,views:o,triggers:(await this.driver.query(this.dbhan,r.triggers)).rows}}}},344:(e,t,n)=>{n(825);const s=n(203),a=n(293),r=n(688),{splitQuery:i,sqliteSplitterOptions:o}=n(660),{runStreamItem:l,waitForDrain:c,modifyRow:p}=n(920),{getLogger:m,createBulkInsertStreamBase:u,extractErrorLogData:d}=global.DBGATE_PACKAGES["dbgate-tools"],g=m("sqliteDriver");let y;const b={...a[1],analyserClass:r,async connect({databaseFile:e,isReadOnly:t,authToken:s,databaseUrl:a,...r}){const i=(y||(y=n(281)),y);return{client:e?new i(e,{readonly:!!t}):new i(a,{authToken:s,readonly:!!t})}},async close(e){e.client.close()},async query(e,t){const n=e.client.prepare(t),s=n.all(),a=n.columns(),r=a.length>0?a:(i=s[0])?Object.keys(i).map((e=>({columnName:e}))):[];var i;return{rows:s.map((e=>p(e,r))),columns:r.map((e=>({columnName:e.name,dataType:e.type})))}},async stream(e,t,n){const s=i(t,o),r={count:0,date:null};console.log("#stream",t);const c=e.client.transaction((()=>{for(const t of s)l(e,t,n,r,a[1].engine);r.date&&n.info({message:`${r.count} rows affected`,time:new Date,severity:"info",rowsAffected:r.count})}));try{c()}catch(e){g.error(d(e),"DBGM-00202 Stream error");const{message:t,procName:s}=e;n.info({message:t,line:0,procedure:s,time:new Date,severity:"error"})}n.done()},async script(e,t,{useTransaction:n}={}){const s=()=>{for(const n of i(t,this.getQuerySplitterOptions("script")))e.client.prepare(n).run()};n?e.client.transaction((()=>{s()}))():s()},async readQueryTask(e,t){const n=e.columns();for(const s of e.iterate())t.write(p(s,n))||await c(t);t.end()},async readQuery(e,t,n){const r=new s.PassThrough({objectMode:!0,highWaterMark:100}),i=e.client.prepare(t),o=i.columns();return r.write({__isStreamHeader:!0,engine:a[1].engine,...n||{columns:o.map((e=>({columnName:e.name,dataType:e.type})))}}),this.readQueryTask(i,r),r},async writeTable(e,t,n){return u(this,s,e,t,n)},async getVersion(e){const{rows:t}=await this.query(e,"select sqlite_version() as version"),{version:n}=t[0];return{version:n,versionText:`SQLite ${n}`}},getAuthTypes:()=>[{title:"File",name:"file",disabledFields:["databaseUrl","authToken"]},{title:"URL",name:"url",disabledFields:["databaseFile"]}]};e.exports=b},317:(e,t,n)=>{n(825);const s=n(203),a=n(688),r=n(293),{splitQuery:i,sqliteSplitterOptions:o}=n(660),{getLogger:l,createBulkInsertStreamBase:c,extractErrorLogData:p}=global.DBGATE_PACKAGES["dbgate-tools"],{runStreamItem:m,waitForDrain:u,modifyRow:d}=n(920),g=l("sqliteDriver");let y;const b={...r[0],analyserClass:a,connect:async({databaseFile:e,isReadOnly:t})=>({client:new(y||(y=n(550)),y)(e,{readonly:!!t})}),async close(e){e.client.close()},async query(e,t){const n=e.client.prepare(t);if(n.reader){const e=n.columns();return{rows:n.all().map((t=>d(t,e))),columns:e.map((e=>({columnName:e.name,dataType:e.type})))}}return n.run(),{rows:[],columns:[]}},async stream(e,t,n){const s=i(t,o),a={count:0,date:null},l=e.client.transaction((()=>{for(const t of s)m(e,t,n,a,r[0].engine);a.date&&n.info({message:`${a.count} rows affected`,time:new Date,severity:"info",rowsAffected:a.count})}));try{l()}catch(e){g.error(p(e),"DBGM-00203 Stream error");const{message:t,procName:s}=e;n.info({message:t,line:0,procedure:s,time:new Date,severity:"error"})}n.done()},async script(e,t){e.client.transaction((()=>{for(const n of i(t,this.getQuerySplitterOptions("script")))e.client.prepare(n).run()}))()},async readQueryTask(e,t){const n=e.columns();for(const s of e.iterate())t.write(d(s,n))||await u(t);t.end()},async readQuery(e,t,n){const a=new s.PassThrough({objectMode:!0,highWaterMark:100}),i=e.client.prepare(t),o=i.columns();return a.write({__isStreamHeader:!0,engine:r[0].engine,...n||{columns:o.map((e=>({columnName:e.name,dataType:e.type})))}}),this.readQueryTask(i,a),a},async writeTable(e,t,n){return c(this,s,e,t,n)},async getVersion(e){const{rows:t}=await this.query(e,"select sqlite_version() as version"),{version:n}=t[0];return{version:n,versionText:`SQLite ${n}`}}};e.exports=b},378:(e,t,n)=>{const s=[n(317),n(344)];s.initialize=e=>{},e.exports=s},920:e=>{function t(e,t){return t.forEach((t=>{(e[t.name]instanceof Uint8Array||e[t.name]instanceof ArrayBuffer)&&(e[t.name]={$binary:{base64:Buffer.from(e[t.name]).toString("base64")}})})),e}e.exports={runStreamItem:function(e,n,s,a,r){const i=e.client.prepare(n);if(console.log(i),console.log(i.reader),i.reader){const e=i.columns();s.recordset(e.map((e=>({columnName:e.name,dataType:e.type}))),{engine:r});for(const n of i.iterate())s.row(t(n,e))}else{const e=i.run();a.count+=e.changes,a.date||(a.date=(new Date).getTime()),(new Date).getTime()-a.date>1e3&&(s.info({message:`${a.count} rows affected`,time:new Date,severity:"info",rowsAffected:a.count}),a.count=0,a.date=null)}},waitForDrain:async function(e){return new Promise((t=>{e.once("drain",(()=>{t()}))}))},modifyRow:t}},237:(e,t,n)=>{const s=n(378);e.exports={packageName:"dbgate-plugin-sqlite",drivers:s,initialize(e){s.initialize(e)}}},926:(e,t,n)=>{const s=n(950),a=n(556),r=n(689),i=n(377);e.exports={objects:s,objectsConditioned:a,indexcols:r,triggers:i}},689:e=>{e.exports="\nSELECT \n m.name as tableName,\n il.name as constraintName,\n il.\"unique\" as isUnique,\n ii.name as columnName,\n il.origin\n FROM sqlite_schema AS m,\n pragma_index_list(m.name) AS il,\n pragma_index_info(il.name) AS ii\n WHERE m.type='table' AND il.origin <> 'pk'\n ORDER BY ii.seqno, il.name\n \n"},950:e=>{e.exports="\nselect * from sqlite_master where (type='table' or type='view')\n"},556:e=>{e.exports="\nselect * from sqlite_master where (type='table' or type='view') and name =OBJECT_ID_CONDITION\n"},377:e=>{e.exports="\nSELECT \n rowid AS objectId,\n name AS pureName,\n CASE \n WHEN sql LIKE '% AFTER %' THEN 'AFTER'\n WHEN sql LIKE '% BEFORE %' THEN 'BEFORE'\n WHEN sql LIKE '% INSTEAD OF %' THEN 'INSTEAD OF'\n ELSE 'UNKNOWN'\n END AS triggerTiming,\n CASE \n WHEN sql LIKE '% INSERT %' THEN 'INSERT'\n WHEN sql LIKE '% UPDATE %' THEN 'UPDATE'\n WHEN sql LIKE '% DELETE %' THEN 'DELETE'\n ELSE NULL\n END AS eventType,\n tbl_name AS tableName,\n sql AS createSql\nFROM \n sqlite_master\nWHERE \n type = 'trigger';\n"},197:e=>{const{SqlDumper:t,arrayToHexString:n}=global.DBGATE_PACKAGES["dbgate-tools"];e.exports=class extends t{renameColumn(e,t){this.putCmd("^alter ^table %f ^rename ^column %i ^to %i",e,e.columnName,t)}renameTable(e,t){this.putCmd("^alter ^table %f ^rename ^to %i",e,t)}putByteArrayValue(e){this.putRaw(`x'${n(e)}'`)}truncateTable(e){this.putCmd("^delete ^from %f",e)}selectScopeIdentity(){this.put("^select last_insert_rowid()")}columnDefinition(e,t){e.dataType&&e.dataType.toLowerCase().includes("int")&&e.notNull&&e.autoIncrement?this.put("^integer ^primary ^key ^autoincrement"):super.columnDefinition(e,t)}createTablePrimaryKeyCore(e){const t=e.columns.find((e=>e.autoIncrement));t&&t.dataType&&t.dataType.toLowerCase().includes("int")&&t.notNull||super.createTablePrimaryKeyCore(e)}enableAllForeignKeys(e){this.putCmd("^pragma ^foreign_keys = %s",e?"on":"off")}}},293:(e,t,n)=>{const{driverBase:s}=global.DBGATE_PACKAGES["dbgate-tools"],a=n(197),{sqliteSplitterOptions:r,noSplitSplitterOptions:i}=n(994);function o(e){if(!e)return e;const t=e.match(/[\/]([^\/]+)$/);return t?t[1]:e}const l={...s,dumperClass:a,dialect:{limitSelect:!0,rangeSelect:!0,offsetFetchRangeSyntax:!1,explicitDropConstraint:!0,stringEscapeChar:"'",fallbackDataType:"nvarchar",allowMultipleValuesInsert:!0,dropColumnDependencies:["indexes","primaryKey","uniques"],quoteIdentifier:e=>`[${e}]`,anonymousPrimaryKey:!0,requireStandaloneSelectForScopeIdentity:!0,createColumn:!0,dropColumn:!0,createIndex:!0,dropIndex:!0,createForeignKey:!1,enableForeignKeyChecks:!1,dropForeignKey:!1,createPrimaryKey:!1,dropPrimaryKey:!1,dropReferencesWhenDropTable:!1,filteredIndexes:!0,anonymousForeignKey:!0},readOnlySessions:!0,supportsTransactions:!0,getQuerySplitterOptions:e=>"editor"==e?{...r,ignoreComments:!0,preventSingleLineSplit:!0}:"stream"==e?i:r,showConnectionTab:e=>!1,predefinedDataTypes:["integer","real","text","blob"]},c={...l,engine:"sqlite@dbgate-plugin-sqlite",title:"SQLite",showConnectionField:(e,t)=>"databaseFile"==e||"isReadOnly"==e,beforeConnectionSave:e=>({...e,singleDatabase:!0,defaultDatabase:o(e.databaseFile)})},p={...l,engine:"libsql@dbgate-plugin-sqlite",title:"LibSQL",authTypeLabel:"Target type",authTypeFirst:!0,premiumOnly:!0,showConnectionField:(e,t)=>"url"===(t?.authType??"url")?["databaseUrl","authToken","isReadOnly","authType"].includes(e):!!["databaseFile","isReadOnly"].includes(e)||"authType"==e,defaultAuthTypeName:"url",beforeConnectionSave:e=>({...e,singleDatabase:!0,defaultDatabase:o(e.databaseFile||e.databaseUrl)})};e.exports=[c,p]},550:e=>{"use strict";e.exports=require("better-sqlite3")},660:e=>{"use strict";e.exports=require("dbgate-query-splitter")},281:e=>{"use strict";e.exports=require("libsql")},825:e=>{"use strict";e.exports=require("lodash")},203:e=>{"use strict";e.exports=require("stream")}},t={},n=function n(s){var a=t[s];if(void 0!==a)return a.exports;var r=t[s]={exports:{}};return e[s](r,r.exports,n),r.exports}(237);module.exports=n})();
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dbgate-plugin-sqlite",
|
|
3
3
|
"main": "dist/backend.js",
|
|
4
|
-
"version": "6.
|
|
4
|
+
"version": "6.7.0",
|
|
5
5
|
"homepage": "https://dbgate.org",
|
|
6
6
|
"description": "SQLite connect plugin for DbGate",
|
|
7
7
|
"repository": {
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"webpack-cli": "^5.1.4"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"dbgate-tools": "^6.
|
|
38
|
+
"dbgate-tools": "^6.7.0",
|
|
39
39
|
"lodash": "^4.17.21",
|
|
40
40
|
"dbgate-query-splitter": "^4.11.7"
|
|
41
41
|
},
|