planche 0.5.2 → 0.6.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/README.md +39 -0
- package/app/_headers +19 -0
- package/app/assets/AboutDialog-HsaLhYrq.js +1 -0
- package/app/assets/ConnectDialog-DAYnaSzA.js +1 -0
- package/app/assets/CopyDatabaseDialog-DCDkX1Zt.js +1 -0
- package/app/assets/CopyTableDialog-BylicT1d.js +1 -0
- package/app/assets/CreateDatabaseDialog-i7_uV-wh.js +1 -0
- package/app/assets/DataDiffDialog-B4SeJXry.js +1 -0
- package/app/assets/DownloadToCSVDialog-jX0lEP8B.js +3 -0
- package/app/assets/EditSchemaDialog-BVOHVgBR.js +1 -0
- package/app/assets/FindReplaceDialog-B0rD26fg.js +1 -0
- package/app/assets/FlushDialog-CNu4QuYo.js +1 -0
- package/app/assets/LinkColumnDialog-BwUBtMiy.js +1 -0
- package/app/assets/LocalHistoryDialog-DUlsyn8i.js +1 -0
- package/app/assets/ProcessListDialog-Chv324I7.js +1 -0
- package/app/assets/QuickCommandPalette-BG5A7y3V.js +1 -0
- package/app/assets/RowFormDialog-C5agNu3l.js +2 -0
- package/app/assets/SafetySettingsDialog-iaN6H-EP.js +1 -0
- package/app/assets/SchemaDiffDialog-D7re7sup.js +7 -0
- package/app/assets/SchemaToHTMLDialog-Biq3ELkl.js +27 -0
- package/app/assets/StatusDialog-D8CcfFkP.js +1 -0
- package/app/assets/TermsDialog-DbHxb0ld.js +1 -0
- package/app/assets/UserAddDialog-B_fz-cXy.js +1 -0
- package/app/assets/UserManagerDialog-ku7exEzu.js +1 -0
- package/app/assets/VariablesDialog-BP2RcCBK.js +1 -0
- package/app/assets/abap-08VXUWAP.js +1 -0
- package/app/assets/apex-BWPQTe0t.js +1 -0
- package/app/assets/app-storage-B6v72zLH.js +1 -0
- package/app/assets/azcli-Bc_sGQ0U.js +1 -0
- package/app/assets/bat-i0X4ZdIN.js +1 -0
- package/app/assets/bicep-B5-_aFwp.js +2 -0
- package/app/assets/button-DkRlMkru.js +1 -0
- package/app/assets/cameligo-DMUM7wLl.js +1 -0
- package/app/assets/chevron-up-Dy_mz-03.js +1 -0
- package/app/assets/clojure-Cm7r79vr.js +1 -0
- package/app/assets/codicon-ngg6Pgfi.ttf +0 -0
- package/app/assets/coffee-Ba7i2nA0.js +1 -0
- package/app/assets/connection-store-CJ_al8qv.js +1 -0
- package/app/assets/cpp-C7h46wYY.js +1 -0
- package/app/assets/csharp-BKxtCVv1.js +1 -0
- package/app/assets/csp-bTuwJoIa.js +1 -0
- package/app/assets/css-DIMkf-bt.js +3 -0
- package/app/assets/css.worker-Dsm2X3j_.js +89 -0
- package/app/assets/cssMode-BK7_e-YI.js +1 -0
- package/app/assets/cypher-CVaqCwHa.js +1 -0
- package/app/assets/dart-onAF5SnQ.js +1 -0
- package/app/assets/database-BIhkgl2O.js +1 -0
- package/app/assets/dbms-Cq4imB7l.js +353 -0
- package/app/assets/de-B_f2X0cM.js +2 -0
- package/app/assets/dialog-BtwqThq6.js +1 -0
- package/app/assets/dist-BV6Hwye5.js +41 -0
- package/app/assets/dist-C2pydad-.js +1 -0
- package/app/assets/dist-C3MLFgG1.js +1 -0
- package/app/assets/dist-Roudme38.js +3 -0
- package/app/assets/dockerfile-DZFCIeNp.js +1 -0
- package/app/assets/ecl-D05T4iGw.js +1 -0
- package/app/assets/editor-Br_kD0ds.css +1 -0
- package/app/assets/editor.api2-JBjomUWM.js +872 -0
- package/app/assets/editor.worker-BboMRUer.js +26 -0
- package/app/assets/elixir-6RTg0lbw.js +1 -0
- package/app/assets/engine-DBTzC3si.js +1 -0
- package/app/assets/file-name-CnYBZPf9.js +1 -0
- package/app/assets/flow9-C5_-GSwl.js +1 -0
- package/app/assets/fr-DigYoMZT.js +2 -0
- package/app/assets/freemarker2-Ca8y5qEc.js +3 -0
- package/app/assets/fsharp-C8Ef5oNN.js +1 -0
- package/app/assets/go-C-y9NEjX.js +1 -0
- package/app/assets/graphql-fmXr3nnJ.js +1 -0
- package/app/assets/handlebars-CMoDOM1Y.js +1 -0
- package/app/assets/hcl-CpzslTdj.js +1 -0
- package/app/assets/html-BOS8Hfbf.js +1 -0
- package/app/assets/html.worker-fD12ABR7.js +502 -0
- package/app/assets/htmlMode-CRjI81Qd.js +1 -0
- package/app/assets/i18n-C7R6hKCp.js +2 -0
- package/app/assets/ini-sBoK_t0W.js +1 -0
- package/app/assets/ja-CPMeuUuT.js +2 -0
- package/app/assets/java-BEtHBSE6.js +1 -0
- package/app/assets/javascript-2ntxzhMa.js +1 -0
- package/app/assets/json.worker-B2CIyALT.js +58 -0
- package/app/assets/jsonMode-C8yGgOEo.js +7 -0
- package/app/assets/julia-Bri6UV-V.js +1 -0
- package/app/assets/ko-IAtUoTg5.js +2 -0
- package/app/assets/kotlin-BOotOW0E.js +1 -0
- package/app/assets/less-B9JPFI3C.js +2 -0
- package/app/assets/lexon-CfSJPG6W.js +1 -0
- package/app/assets/liquid-DThFAxbS.js +1 -0
- package/app/assets/lspLanguageFeatures-DQW0rv3P.js +4 -0
- package/app/assets/lua-CsQS60Ue.js +1 -0
- package/app/assets/m3-D-oSqn_W.js +1 -0
- package/app/assets/main-DI8DxG3x.css +2 -0
- package/app/assets/main-NJl8KiiX.js +73 -0
- package/app/assets/markdown-Cimd5fb3.js +1 -0
- package/app/assets/mdx-CI71gDmg.js +1 -0
- package/app/assets/mips-CIPQ_RoX.js +1 -0
- package/app/assets/msdax-DauUninz.js +1 -0
- package/app/assets/mysql-SOo6toE5.js +1 -0
- package/app/assets/objective-c-FvmIjYaQ.js +1 -0
- package/app/assets/pascal-DrH0SRf2.js +1 -0
- package/app/assets/pascaligo-D-ptJ9y-.js +1 -0
- package/app/assets/perl-oz_6vUea.js +1 -0
- package/app/assets/pgsql-DTj74zXo.js +1 -0
- package/app/assets/php-nr791fC2.js +1 -0
- package/app/assets/pla-CopQ2nXW.js +1 -0
- package/app/assets/postiats-43DmfD33.js +1 -0
- package/app/assets/powerquery-D3hlyOfw.js +1 -0
- package/app/assets/powershell-DmHpPYUd.js +1 -0
- package/app/assets/preload-helper-Czpn1I53.js +1 -0
- package/app/assets/protobuf-C531GsRP.js +2 -0
- package/app/assets/pug-Z5eAx3Zn.js +1 -0
- package/app/assets/python-Ck7s8L2p.js +1 -0
- package/app/assets/qsharp-DkqhCAOL.js +1 -0
- package/app/assets/query-execution-CR2mkIdH.js +7 -0
- package/app/assets/query-store-DlzOIWw1.js +1 -0
- package/app/assets/r-BwWrilGY.js +1 -0
- package/app/assets/razor-DiN-9kkz.js +1 -0
- package/app/assets/redis-ClamHrr6.js +1 -0
- package/app/assets/redshift-DT7zqm-g.js +1 -0
- package/app/assets/restructuredtext-BYgofb2h.js +1 -0
- package/app/assets/rolldown-runtime-hePW80VL.js +1 -0
- package/app/assets/ruby-DezsRK8O.js +1 -0
- package/app/assets/rust-DdL9SqIa.js +1 -0
- package/app/assets/sb-CcwsVR0C.js +1 -0
- package/app/assets/scala-DHpiXF5c.js +1 -0
- package/app/assets/schema-nodes-n_QZJb21.js +1 -0
- package/app/assets/scheme-BeGwcela.js +1 -0
- package/app/assets/scss-gp-XZpBa.js +3 -0
- package/app/assets/select-CqYxAwnu.js +1 -0
- package/app/assets/settings-store-DxKFgC4Z.js +1 -0
- package/app/assets/shell-CC2rA5mh.js +1 -0
- package/app/assets/solidity-BEEn4gHE.js +1 -0
- package/app/assets/sophia-CRfGWb83.js +1 -0
- package/app/assets/sparql-D_Lu-MrJ.js +1 -0
- package/app/assets/sql-NEE52Syq.js +1 -0
- package/app/assets/sqlite3-BVKGSWc-.wasm +0 -0
- package/app/assets/sqlite3-opfs-async-proxy-D_xnb1D8.js +876 -0
- package/app/assets/sqlite3-worker1-CVKz6JuG.js +43 -0
- package/app/assets/st-DbInun42.js +1 -0
- package/app/assets/storage-worker-DEIYmjYK.js +43 -0
- package/app/assets/swift-Bxkupp3x.js +1 -0
- package/app/assets/systemverilog-Bz4Y3fRF.js +1 -0
- package/app/assets/table-copy-2y2RNth1.js +1 -0
- package/app/assets/table-definition-Bs5VSn0X.js +1 -0
- package/app/assets/tcl-DISqw1ZD.js +1 -0
- package/app/assets/ts.worker-BwG70EDZ.js +67734 -0
- package/app/assets/tsMode-Dzctobqp.js +11 -0
- package/app/assets/twig-De2hgUGE.js +1 -0
- package/app/assets/typescript-Ww5oHWDp.js +1 -0
- package/app/assets/typespec-B8J7ngcE.js +1 -0
- package/app/assets/ui-store-BPY9VfQP.js +1 -0
- package/app/assets/use-engine-F2Y_trPz.js +1 -0
- package/app/assets/user-store-D5dzuD-E.js +1 -0
- package/app/assets/vb-DV3o63ZY.js +1 -0
- package/app/assets/wgsl-DpFanUEy.js +298 -0
- package/app/assets/xml-CT99FsSc.js +1 -0
- package/app/assets/yaml-DA78fpmA.js +1 -0
- package/app/assets/zh-DCKqmOQA.js +2 -0
- package/app/cloudflare-d1-client/index.html +111 -0
- package/app/de/cloudflare-d1-client/index.html +111 -0
- package/app/de/index.html +123 -0
- package/app/de/mariadb-client/index.html +111 -0
- package/app/de/mysql-client/index.html +112 -0
- package/app/de/neon-client/index.html +111 -0
- package/app/de/oracle-client/index.html +111 -0
- package/app/de/postgresql-client/index.html +111 -0
- package/app/de/sql-server-client/index.html +111 -0
- package/app/de/sqlite-viewer/index.html +112 -0
- package/app/de/supabase-client/index.html +111 -0
- package/app/favicon.svg +1 -0
- package/app/fr/cloudflare-d1-client/index.html +111 -0
- package/app/fr/index.html +123 -0
- package/app/fr/mariadb-client/index.html +111 -0
- package/app/fr/mysql-client/index.html +112 -0
- package/app/fr/neon-client/index.html +111 -0
- package/app/fr/oracle-client/index.html +111 -0
- package/app/fr/postgresql-client/index.html +111 -0
- package/app/fr/sql-server-client/index.html +111 -0
- package/app/fr/sqlite-viewer/index.html +112 -0
- package/app/fr/supabase-client/index.html +111 -0
- package/app/icons.svg +24 -0
- package/app/index.html +123 -0
- package/app/ja/cloudflare-d1-client/index.html +111 -0
- package/app/ja/index.html +123 -0
- package/app/ja/mariadb-client/index.html +111 -0
- package/app/ja/mysql-client/index.html +112 -0
- package/app/ja/neon-client/index.html +111 -0
- package/app/ja/oracle-client/index.html +111 -0
- package/app/ja/postgresql-client/index.html +111 -0
- package/app/ja/sql-server-client/index.html +111 -0
- package/app/ja/sqlite-viewer/index.html +112 -0
- package/app/ja/supabase-client/index.html +111 -0
- package/app/ko/cloudflare-d1-client/index.html +111 -0
- package/app/ko/index.html +123 -0
- package/app/ko/mariadb-client/index.html +111 -0
- package/app/ko/mysql-client/index.html +112 -0
- package/app/ko/neon-client/index.html +111 -0
- package/app/ko/oracle-client/index.html +111 -0
- package/app/ko/postgresql-client/index.html +111 -0
- package/app/ko/sql-server-client/index.html +111 -0
- package/app/ko/sqlite-viewer/index.html +112 -0
- package/app/ko/supabase-client/index.html +111 -0
- package/app/landing.css +25 -0
- package/app/mariadb-client/index.html +111 -0
- package/app/mysql-client/index.html +112 -0
- package/app/neon-client/index.html +111 -0
- package/app/og-image.png +0 -0
- package/app/oracle-client/index.html +111 -0
- package/app/postgresql-client/index.html +111 -0
- package/app/robots.txt +3 -0
- package/app/sample-shop.db +0 -0
- package/app/sitemap.xml +603 -0
- package/app/sql-server-client/index.html +111 -0
- package/app/sqlite-viewer/index.html +112 -0
- package/app/supabase-client/index.html +111 -0
- package/app/zh/cloudflare-d1-client/index.html +111 -0
- package/app/zh/index.html +123 -0
- package/app/zh/mariadb-client/index.html +111 -0
- package/app/zh/mysql-client/index.html +112 -0
- package/app/zh/neon-client/index.html +111 -0
- package/app/zh/oracle-client/index.html +111 -0
- package/app/zh/postgresql-client/index.html +111 -0
- package/app/zh/sql-server-client/index.html +111 -0
- package/app/zh/sqlite-viewer/index.html +112 -0
- package/app/zh/supabase-client/index.html +111 -0
- package/dist/index.js +990 -659
- package/package.json +5 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{pt as e}from"./main-NJl8KiiX.js";import{h as t}from"./editor.api2-JBjomUWM.js";import{_ as n,a as r,c as i,d as a,f as o,g as s,h as c,i as l,l as u,m as d,n as f,o as p,p as m,r as h,s as g,t as _,u as v,v as y}from"./lspLanguageFeatures-DQW0rv3P.js";var b=12e4,x=class{constructor(e){this._defaults=e,this._worker=null,this._client=null,this._idleCheckInterval=window.setInterval(()=>this._checkIfIdle(),3e4),this._lastUsedTime=0,this._configChangeListener=this._defaults.onDidChange(()=>this._stopWorker())}_stopWorker(){this._worker&&=(this._worker.dispose(),null),this._client=null}dispose(){clearInterval(this._idleCheckInterval),this._configChangeListener.dispose(),this._stopWorker()}_checkIfIdle(){this._worker&&Date.now()-this._lastUsedTime>b&&this._stopWorker()}_getClient(){return this._lastUsedTime=Date.now(),this._client||=(this._worker=e({moduleId:`vs/language/css/cssWorker`,createWorker:()=>new Worker(new URL(`/assets/css.worker-Dsm2X3j_.js`,``+import.meta.url),{type:`module`}),label:this._defaults.languageId,createData:{options:this._defaults.options,languageId:this._defaults.languageId}}),this._worker.getProxy()),this._client}getLanguageServiceWorker(...e){let t;return this._getClient().then(e=>{t=e}).then(t=>{if(this._worker)return this._worker.withSyncedResources(e)}).then(e=>t)}};function S(e){let n=[],s=[],c=new x(e);n.push(c);let g=(...e)=>c.getLanguageServiceWorker(...e);function y(){let{languageId:n,modeConfiguration:c}=e;w(s),c.completionItems&&s.push(t.registerCompletionItemProvider(n,new _(g,[`/`,`-`,`:`]))),c.hovers&&s.push(t.registerHoverProvider(n,new a(g))),c.documentHighlights&&s.push(t.registerDocumentHighlightProvider(n,new p(g))),c.definitions&&s.push(t.registerDefinitionProvider(n,new f(g))),c.references&&s.push(t.registerReferenceProvider(n,new o(g))),c.documentSymbols&&s.push(t.registerDocumentSymbolProvider(n,new u(g))),c.rename&&s.push(t.registerRenameProvider(n,new m(g))),c.colors&&s.push(t.registerColorProvider(n,new l(g))),c.foldingRanges&&s.push(t.registerFoldingRangeProvider(n,new v(g))),c.diagnostics&&s.push(new h(n,g,e.onDidChange)),c.selectionRanges&&s.push(t.registerSelectionRangeProvider(n,new d(g))),c.documentFormattingEdits&&s.push(t.registerDocumentFormattingEditProvider(n,new r(g))),c.documentRangeFormattingEdits&&s.push(t.registerDocumentRangeFormattingEditProvider(n,new i(g)))}return y(),n.push(C(s)),C(n)}function C(e){return{dispose:()=>w(e)}}function w(e){for(;e.length;)e.pop().dispose()}export{_ as CompletionAdapter,f as DefinitionAdapter,h as DiagnosticsAdapter,l as DocumentColorAdapter,r as DocumentFormattingEditProvider,p as DocumentHighlightAdapter,g as DocumentLinkAdapter,i as DocumentRangeFormattingEditProvider,u as DocumentSymbolAdapter,v as FoldingRangeAdapter,a as HoverAdapter,o as ReferenceAdapter,m as RenameAdapter,d as SelectionRangeAdapter,x as WorkerManager,c as fromPosition,s as fromRange,S as setupMode,n as toRange,y as toTextEdit};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={comments:{lineComment:`//`,blockComment:[`/*`,`*/`]},brackets:[[`{`,`}`],[`[`,`]`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`},{open:"`",close:"`"}],surroundingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`},{open:"`",close:"`"}]},t={defaultToken:``,tokenPostfix:`.cypher`,ignoreCase:!0,brackets:[{open:`{`,close:`}`,token:`delimiter.curly`},{open:`[`,close:`]`,token:`delimiter.bracket`},{open:`(`,close:`)`,token:`delimiter.parenthesis`}],keywords:`ALL.AND.AS.ASC.ASCENDING.BY.CALL.CASE.CONTAINS.CREATE.DELETE.DESC.DESCENDING.DETACH.DISTINCT.ELSE.END.ENDS.EXISTS.IN.IS.LIMIT.MANDATORY.MATCH.MERGE.NOT.ON.ON.OPTIONAL.OR.ORDER.REMOVE.RETURN.SET.SKIP.STARTS.THEN.UNION.UNWIND.WHEN.WHERE.WITH.XOR.YIELD`.split(`.`),builtinLiterals:[`true`,`TRUE`,`false`,`FALSE`,`null`,`NULL`],builtinFunctions:`abs.acos.asin.atan.atan2.avg.ceil.coalesce.collect.cos.cot.count.degrees.e.endNode.exists.exp.floor.head.id.keys.labels.last.left.length.log.log10.lTrim.max.min.nodes.percentileCont.percentileDisc.pi.properties.radians.rand.range.relationships.replace.reverse.right.round.rTrim.sign.sin.size.split.sqrt.startNode.stDev.stDevP.substring.sum.tail.tan.timestamp.toBoolean.toFloat.toInteger.toLower.toString.toUpper.trim.type`.split(`.`),operators:[`+`,`-`,`*`,`/`,`%`,`^`,`=`,`<>`,`<`,`>`,`<=`,`>=`,`->`,`<-`,`-->`,`<--`],escapes:/\\(?:[tbnrf\\"'`]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\d+/,octaldigits:/[0-7]+/,hexdigits:/[0-9a-fA-F]+/,tokenizer:{root:[[/[{}[\]()]/,`@brackets`],{include:`common`}],common:[{include:`@whitespace`},{include:`@numbers`},{include:`@strings`},[/:[a-zA-Z_][\w]*/,`type.identifier`],[/[a-zA-Z_][\w]*(?=\()/,{cases:{"@builtinFunctions":`predefined.function`}}],[/[a-zA-Z_$][\w$]*/,{cases:{"@keywords":`keyword`,"@builtinLiterals":`predefined.literal`,"@default":`identifier`}}],[/`/,`identifier.escape`,`@identifierBacktick`],[/[;,.:|]/,`delimiter`],[/[<>=%+\-*/^]+/,{cases:{"@operators":`delimiter`,"@default":``}}]],numbers:[[/-?(@digits)[eE](-?(@digits))?/,`number.float`],[/-?(@digits)?\.(@digits)([eE]-?(@digits))?/,`number.float`],[/-?0x(@hexdigits)/,`number.hex`],[/-?0(@octaldigits)/,`number.octal`],[/-?(@digits)/,`number`]],strings:[[/"([^"\\]|\\.)*$/,`string.invalid`],[/'([^'\\]|\\.)*$/,`string.invalid`],[/"/,`string`,`@stringDouble`],[/'/,`string`,`@stringSingle`]],whitespace:[[/[ \t\r\n]+/,`white`],[/\/\*/,`comment`,`@comment`],[/\/\/.*$/,`comment`]],comment:[[/\/\/.*/,`comment`],[/[^/*]+/,`comment`],[/\*\//,`comment`,`@pop`],[/[/*]/,`comment`]],stringDouble:[[/[^\\"]+/,`string`],[/@escapes/,`string`],[/\\./,`string.invalid`],[/"/,`string`,`@pop`]],stringSingle:[[/[^\\']+/,`string`],[/@escapes/,`string`],[/\\./,`string.invalid`],[/'/,`string`,`@pop`]],identifierBacktick:[[/[^\\`]+/,`identifier.escape`],[/@escapes/,`identifier.escape`],[/\\./,`identifier.escape.invalid`],[/`/,`identifier.escape`,`@pop`]]}};export{e as conf,t as language};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={comments:{lineComment:`//`,blockComment:[`/*`,`*/`]},brackets:[[`{`,`}`],[`[`,`]`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`'`,close:`'`,notIn:[`string`,`comment`]},{open:`"`,close:`"`,notIn:[`string`]},{open:"`",close:"`",notIn:[`string`,`comment`]},{open:`/**`,close:` */`,notIn:[`string`]}],surroundingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`<`,close:`>`},{open:`'`,close:`'`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:"`",close:"`"}],folding:{markers:{start:/^\s*\s*#?region\b/,end:/^\s*\s*#?endregion\b/}}},t={defaultToken:`invalid`,tokenPostfix:`.dart`,keywords:`abstract.dynamic.implements.show.as.else.import.static.assert.enum.in.super.async.export.interface.switch.await.extends.is.sync.break.external.library.this.case.factory.mixin.throw.catch.false.new.true.class.final.null.try.const.finally.on.typedef.continue.for.operator.var.covariant.Function.part.void.default.get.rethrow.while.deferred.hide.return.with.do.if.set.yield`.split(`.`),typeKeywords:[`int`,`double`,`String`,`bool`],operators:`+.-.*./.~/.%.++.--.==.!=.>.<.>=.<=.=.-=./=.%=.>>=.^=.+=.*=.~/=.<<=.&=.!=.||.&&.&.|.^.~.<<.>>.!.>>>.??.?.:.|=`.split(`.`),symbols:/[=><!~?:&|+\-*\/\^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,digits:/\d+(_+\d+)*/,octaldigits:/[0-7]+(_+[0-7]+)*/,binarydigits:/[0-1]+(_+[0-1]+)*/,hexdigits:/[[0-9a-fA-F]+(_+[0-9a-fA-F]+)*/,regexpctl:/[(){}\[\]\$\^|\-*+?\.]/,regexpesc:/\\(?:[bBdDfnrstvwWn0\\\/]|@regexpctl|c[A-Z]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4})/,tokenizer:{root:[[/[{}]/,`delimiter.bracket`],{include:`common`}],common:[[/[a-z_$][\w$]*/,{cases:{"@typeKeywords":`type.identifier`,"@keywords":`keyword`,"@default":`identifier`}}],[/[A-Z_$][\w\$]*/,`type.identifier`],{include:`@whitespace`},[/\/(?=([^\\\/]|\\.)+\/([gimsuy]*)(\s*)(\.|;|,|\)|\]|\}|$))/,{token:`regexp`,bracket:`@open`,next:`@regexp`}],[/@[a-zA-Z]+/,`annotation`],[/[()\[\]]/,`@brackets`],[/[<>](?!@symbols)/,`@brackets`],[/!(?=([^=]|$))/,`delimiter`],[/@symbols/,{cases:{"@operators":`delimiter`,"@default":``}}],[/(@digits)[eE]([\-+]?(@digits))?/,`number.float`],[/(@digits)\.(@digits)([eE][\-+]?(@digits))?/,`number.float`],[/0[xX](@hexdigits)n?/,`number.hex`],[/0[oO]?(@octaldigits)n?/,`number.octal`],[/0[bB](@binarydigits)n?/,`number.binary`],[/(@digits)n?/,`number`],[/[;,.]/,`delimiter`],[/"([^"\\]|\\.)*$/,`string.invalid`],[/'([^'\\]|\\.)*$/,`string.invalid`],[/"/,`string`,`@string_double`],[/'/,`string`,`@string_single`]],whitespace:[[/[ \t\r\n]+/,``],[/\/\*\*(?!\/)/,`comment.doc`,`@jsdoc`],[/\/\*/,`comment`,`@comment`],[/\/\/\/.*$/,`comment.doc`],[/\/\/.*$/,`comment`]],comment:[[/[^\/*]+/,`comment`],[/\*\//,`comment`,`@pop`],[/[\/*]/,`comment`]],jsdoc:[[/[^\/*]+/,`comment.doc`],[/\*\//,`comment.doc`,`@pop`],[/[\/*]/,`comment.doc`]],regexp:[[/(\{)(\d+(?:,\d*)?)(\})/,[`regexp.escape.control`,`regexp.escape.control`,`regexp.escape.control`]],[/(\[)(\^?)(?=(?:[^\]\\\/]|\\.)+)/,[`regexp.escape.control`,{token:`regexp.escape.control`,next:`@regexrange`}]],[/(\()(\?:|\?=|\?!)/,[`regexp.escape.control`,`regexp.escape.control`]],[/[()]/,`regexp.escape.control`],[/@regexpctl/,`regexp.escape.control`],[/[^\\\/]/,`regexp`],[/@regexpesc/,`regexp.escape`],[/\\\./,`regexp.invalid`],[/(\/)([gimsuy]*)/,[{token:`regexp`,bracket:`@close`,next:`@pop`},`keyword.other`]]],regexrange:[[/-/,`regexp.escape.control`],[/\^/,`regexp.invalid`],[/@regexpesc/,`regexp.escape`],[/[^\]]/,`regexp`],[/\]/,{token:`regexp.escape.control`,next:`@pop`,bracket:`@close`}]],string_double:[[/[^\\"\$]+/,`string`],[/[^\\"]+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/"/,`string`,`@pop`],[/\$\w+/,`identifier`]],string_single:[[/[^\\'\$]+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/'/,`string`,`@pop`],[/\$\w+/,`identifier`]]}};export{e as conf,t as language};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as e,n as t,r as n}from"./ui-store-BPY9VfQP.js";import{i as r}from"./i18n-C7R6hKCp.js";import{t as i}from"./preload-helper-Czpn1I53.js";import{i as a,n as o,r as s,t as c}from"./app-storage-B6v72zLH.js";import{t as l}from"./connection-store-CJ_al8qv.js";import{n as u}from"./query-store-DlzOIWw1.js";function d(e,t){let n=globalThis,r=`__planche_${e}`;return r in n||(n[r]=t()),n[r]}var f=new Set([`neon`,`supabase`]);function p(e){return e===`postgres`||f.has(e)}var ee=`_rowid_`,te=`http://127.0.0.1:8888`,m=d(`tunnelAgent`,()=>({url:null,token:null}));function ne(e){m.url=e.url?.replace(/\/+$/,``)||null,m.token=e.token?.trim()||null}var re=new Set([`127.0.0.1`,`localhost`,`[::1]`,`::1`]);function ie(e){try{let t=new URL(e);return(t.protocol===`http:`||t.protocol===`https:`)&&re.has(t.hostname)}catch{return!1}}function ae(e){try{return typeof window<`u`&&new URL(e).origin===window.location.origin}catch{return!1}}function oe(e){return ie(e)||ae(e)}function se(){return m.url!==null&&m.url!==`/api`&&!oe(m.url)}function h(){return m.url??te}function g(){let e=h();return e===`/api`?r.t(`services.agent.devProxyUrl`,{url:`http://localhost:8888`}):e}async function ce(){let e=g(),t;try{let e={};m.token&&(e.Authorization=`Bearer ${m.token}`),t=await(await fetch(`${h()}/health`,{cache:`no-store`,headers:e})).json()}catch(t){return{state:`offline`,url:e,message:t instanceof Error?t.message:String(t)}}return t.name!==`planche`||typeof t.version!=`string`||!/^[\w.+-]{1,32}$/.test(t.version)?{state:`offline`,url:e,message:r.t(`services.agent.notPlanche`)}:t.protocolVersion===2?t.authorized===!1||m.token===null&&t.authorized===void 0?{state:`unauthorized`,url:e,version:t.version}:{state:`online`,url:e,version:t.version,activeConnections:t.activeConnections??0,...t.gateway?{gateway:t.gateway}:{}}:{state:`outdated`,url:e,version:t.version,protocolVersion:t.protocolVersion??0}}async function le(){let e=await fetch(`${h()}/profiles`,{cache:`no-store`,headers:b()}),t=await e.json().catch(()=>null);if(!e.ok||!t||t.success!==!0)throw new x(t?.message??r.t(`services.agent.httpError`,{status:e.status,statusText:e.statusText}),e.status);return t}function _(e){let t=e.ssh;if(t?.enabled)return{host:t.host,port:t.port,user:t.user,auth:t.auth,password:t.auth===`password`?t.password??``:void 0,privateKey:t.auth===`key`?t.privateKey:void 0,passphrase:t.auth===`key`&&t.passphrase||void 0}}function v(e){return e.gatewayProfile?{profile:e.gatewayProfile}:e.dbms===`sqlite`?{driver:`sqlite`,file:e.file??``,createIfMissing:e.createIfMissing??!1,readonly:e.readOnly??!1}:e.dbms===`d1`?{driver:`d1`,accountId:e.accountId??``,databaseId:e.databaseId??``,apiToken:e.pass}:e.dbms===`postgres`?{driver:`postgres`,host:e.host,port:e.port,user:e.user,password:e.pass,database:e.database||`postgres`,ssl:e.ssl??!1,sslVerify:e.sslVerify??!1,ssh:_(e)}:f.has(e.dbms)?{driver:`postgres`,host:e.host,port:e.port,user:e.user,password:e.pass,database:e.database||`postgres`,ssl:!0,sslVerify:e.dbms===`neon`}:e.dbms===`mssql`?{driver:`mssql`,host:e.host,port:e.port,user:e.user,password:e.pass,database:e.database||`master`,ssl:e.ssl??!1,sslVerify:e.sslVerify??!1,ssh:_(e)}:e.dbms===`oracle`?{driver:`oracle`,host:e.host,port:e.port,user:e.user,password:e.pass,serviceName:e.database||`FREEPDB1`,ssh:_(e)}:{driver:`mysql`,host:e.host,port:e.port,user:e.user,password:e.pass,charset:e.charset===`utf8`?`utf8mb4`:e.charset,ssl:e.ssl??!1,sslVerify:e.sslVerify??!1,ssh:_(e)}}var y=d(`tunnelAuthTokens`,()=>new Map);function ue(e,t){let n=t?.trim();n?y.set(e,n):y.delete(e)}function de(e){return e?.trim()||m.token||void 0}function b(e){let t={"Content-Type":`application/json`},n=de(e);return n&&(t.Authorization=`Bearer ${n}`),t}var x=class extends Error{status;body;constructor(e,t,n=null){super(e),this.status=t,this.body=n}};function fe(e){if(!(e instanceof x)||e.status!==409)return null;let t=e.body,n=t?.hostKey;if(t?.code!==`host-key-unknown`||!n)return null;let r=typeof n.host==`string`&&/^[A-Za-z0-9._:[\]-]{1,253}$/.test(n.host)?n.host:null,i=typeof n.type==`string`&&/^[\w.@-]{1,64}$/.test(n.type)?n.type:null,a=typeof n.fingerprint==`string`&&/^SHA256:[A-Za-z0-9+/]{43}$/.test(n.fingerprint)?n.fingerprint:null,o=Number.isInteger(n.port)&&n.port>0&&n.port<65536?n.port:null;return r&&i&&a&&o?{host:r,port:o,type:i,fingerprint:a}:null}async function pe(e,t){let n=await fetch(`${e.replace(/\/+$/,``)}/pair`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({code:t})}),i=await n.json().catch(()=>null);if(!n.ok||!i?.success||typeof i.token!=`string`)throw Error(i?.message??r.t(`services.agent.httpError`,{status:n.status,statusText:n.statusText}));return i.token}async function S(e,t,n){let i;try{i=await fetch(`${h()}${e}`,{method:`POST`,headers:b(n),body:JSON.stringify(t)})}catch(e){throw Error(r.t(`services.agent.unreachable`,{url:g(),message:e instanceof Error?e.message:String(e)}))}let a=null;try{a=await i.json()}catch{a=null}if(!i.ok)throw new x(a?.message??r.t(`services.agent.httpError`,{status:i.status,statusText:i.statusText}),i.status,a);if(!a)throw Error(r.t(`services.agent.emptyResponse`));return a}async function C(e,t){let n=await S(`/connect`,e,t);return n.success&&n.connectionId&&(ue(n.connectionId,de(t)),me()),n}async function w(e,t,n){let r=performance.now(),i=await S(`/query`,{connectionId:e,sql:t,database:n},y.get(e));return i.execTime||=Math.round(performance.now()-r),i}function me(){if(typeof window>`u`)return;let e=d(`tunnelPageHide`,()=>({done:!1}));e.done||(e.done=!0,window.addEventListener(`pagehide`,()=>{for(let[e,t]of y)fetch(`${h()}/disconnect`,{method:`POST`,headers:b(t),body:JSON.stringify({connectionId:e}),keepalive:!0}).catch(()=>void 0)}))}async function he(e){try{await S(`/disconnect`,{connectionId:e},y.get(e))}finally{y.delete(e)}}async function ge(e,t){return S(`/test-connection`,e,t)}function T(e,t,n){return e.map(e=>e.id===t?n(e):e.children.length>0?{...e,children:T(e.children,t,n)}:e)}function _e(e,t){for(let n of e){if(n.id===t)return n;let e=_e(n.children,t);if(e)return e}return null}function E(e,t,n){let r=new Set(e??[]);if(n)r.add(t);else for(let e of r)(e===t||e.startsWith(`${t}/`))&&r.delete(e);return[...r]}var ve=n()(a(e=>({trees:{},selectedNodeId:{},expandedIds:{},setTree:(t,n)=>e(e=>({trees:{...e.trees,[t]:n}})),setChildren:(t,n,r)=>e(e=>{let i=e.trees[t];return i?{expandedIds:{...e.expandedIds,[t]:E(e.expandedIds[t],n,!0)},trees:{...e.trees,[t]:T(i,n,e=>({...e,children:r,isLoading:!1,isExpanded:!0,metadata:{...e.metadata,count:r.length}}))}}:e}),setNodeMetadata:(t,n,r)=>e(e=>{let i=e.trees[t];return i?{trees:{...e.trees,[t]:T(i,n,e=>({...e,metadata:{...e.metadata,...r}}))}}:e}),toggleExpanded:(t,n)=>e(e=>{let r=e.trees[t];if(!r)return e;let i=!_e(r,n)?.isExpanded;return{expandedIds:{...e.expandedIds,[t]:E(e.expandedIds[t],n,i)},trees:{...e.trees,[t]:T(r,n,e=>({...e,isExpanded:i}))}}}),setExpanded:(t,n,r)=>e(e=>{let i=e.trees[t];return i?{expandedIds:{...e.expandedIds,[t]:E(e.expandedIds[t],n,r)},trees:{...e.trees,[t]:T(i,n,e=>({...e,isExpanded:r}))}}:e}),setSelected:(t,n)=>e(e=>({selectedNodeId:{...e.selectedNodeId,[t]:n}})),setLoading:(t,n,r)=>e(e=>{let i=e.trees[t];return i?{trees:{...e.trees,[t]:T(i,n,e=>({...e,isLoading:r}))}}:e}),removeTree:t=>e(e=>{let n={...e.trees},r={...e.selectedNodeId};return delete n[t],delete r[t],{trees:n,selectedNodeId:r}})}),{name:`planche-schema`,storage:c(),partialize:e=>({selectedNodeId:e.selectedNodeId,expandedIds:e.expandedIds})})),ye=32,D=24,be=931071618,O=931071619,k=(e,t)=>(e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3])>>>0,xe=(e,t)=>(e[t+3]<<24|e[t+2]<<16|e[t+1]<<8|e[t])>>>0;function A(e,t,n,r,i=0,a=0){let o=r?k:xe;for(let r=t;r<t+n;r+=8)i=i+o(e,r)+a>>>0,a=a+o(e,r+4)+i>>>0;return[i,a]}function Se(e){if(e.byteLength<ye)return null;let t=k(e,0);if(t!==be&&t!==O)return null;let n=t===O,r=k(e,8);if(r<512||r>65536||r&r-1)return null;let i=k(e,16),a=k(e,20),[o,s]=A(e,0,24,n);if(o!==k(e,24)||s!==k(e,28))return null;let c=D+r,l=new Map,u=new Map,d=0,f=0,p=0;for(let t=ye;t+c<=e.byteLength&&!(k(e,t+8)!==i||k(e,t+12)!==a||([o,s]=A(e,t,8,n,o,s),[o,s]=A(e,t+D,r,n,o,s),o!==k(e,t+16)||s!==k(e,t+20)));t+=c){let n=k(e,t),r=k(e,t+4);if(n===0)break;if(u.set(n,e.subarray(t+D,t+c)),p++,r>0){for(let[e,t]of u)l.set(e,t);u.clear(),d=r,f+=p,p=0}}return{pageSize:r,dbSizePages:d,pages:l,committedFrames:f}}function j(e,t){let n=Se(t);if(!n||n.committedFrames===0)return{bytes:e,appliedFrames:0};let{pageSize:r,dbSizePages:i,pages:a}=n,o=Math.max(i*r,e.byteLength-e.byteLength%r),s=new Uint8Array(o);s.set(e.subarray(0,Math.min(e.byteLength,o)));for(let[e,t]of a){let n=(e-1)*r;n+r<=o&&s.set(t,n)}return{bytes:i>0?s.subarray(0,i*r):s,appliedFrames:n.committedFrames}}var Ce=`planche-file-handles`,M=`handles`;function we(){return new Promise((e,t)=>{if(typeof indexedDB>`u`){t(Error(`IndexedDB unavailable`));return}let n=indexedDB.open(Ce,1);n.onupgradeneeded=()=>n.result.createObjectStore(M),n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}function N(e,t){return we().then(n=>new Promise((r,i)=>{let a=t(n.transaction(M,e).objectStore(M));a.onsuccess=()=>r(a.result),a.onerror=()=>i(a.error)}))}var P=e=>`${e}:wal`;async function F(e,t){try{await N(`readwrite`,n=>n.put(t,e))}catch{}}async function I(e){try{return await N(`readonly`,t=>t.get(e))??null}catch{return null}}async function L(e){try{await N(`readwrite`,t=>t.delete(e))}catch{}}async function R(e,t){let n=e,r={mode:`readwrite`};try{if(n.queryPermission&&await n.queryPermission(r)===`granted`)return!0;if(t&&n.requestPermission)return await n.requestPermission(r)===`granted`}catch{}return!1}var z=e=>`dbcache-meta:${e}`,B=e=>`${e}.sqlite3`;async function Te(e){try{let t=await s.getItem(z(e));if(!t)return null;let n=JSON.parse(t),r=await o.get(B(e));return r?{bytes:new Uint8Array(r),meta:n}:null}catch{return null}}async function Ee(e,t,n){try{let r=t.slice().buffer;return await o.set(B(e),r)?(await s.setItem(z(e),JSON.stringify(n)),!0):!1}catch(e){return console.warn(`[db-cache] write failed:`,e),!1}}async function De(e,t){try{let n=await s.getItem(z(e));if(!n)return;await s.setItem(z(e),JSON.stringify({...JSON.parse(n),...t}))}catch{}}async function Oe(e){try{await o.remove(B(e)),await s.removeItem(z(e))}catch{}}var ke=`browser:`;function V(e){return typeof e==`string`&&e.startsWith(`browser:`)}var Ae=750;function je(e){let t=W.get(e);t?.profileId&&(t.flushTimer&&clearTimeout(t.flushTimer),t.flushTimer=setTimeout(()=>{t.flushTimer=null,H(e)},Ae))}async function H(e){let t=W.get(e);if(t?.profileId)try{let n=await Ze(e);await Ee(t.profileId,n,Me(t))}catch(e){console.warn(`[browser-sqlite] cache flush failed:`,e)}}function Me(e){return{name:e.source.name,lastModified:e.fileMeta.lastModified,size:e.fileMeta.size,dirty:e.dirty,cachedAt:Date.now()}}var Ne=d(`browserSqliteVisibilityListener`,()=>({installed:!1}));typeof document<`u`&&!Ne.installed&&(Ne.installed=!0,document.addEventListener(`visibilitychange`,()=>{if(document.visibilityState===`hidden`)for(let[e,t]of W)t.flushTimer&&(clearTimeout(t.flushTimer),t.flushTimer=null,H(e))}));function U(e){return e.toLowerCase().endsWith(`-wal`)}var W=d(`browserSqliteDatabases`,()=>new Map),Pe=d(`browserSqliteModule`,()=>({promise:null}));async function G(){return Pe.promise||=i(()=>import(`./dist-Roudme38.js`).then(e=>e.default()),[]),Pe.promise}function K(e){let t=W.get(e);if(!t)throw Error(`Browser connection not found: ${e}`);return t}function Fe(e){if(!(e.byteLength>=100&&e[0]===83&&e[15]===0)||e[18]!==2&&e[19]!==2)return{bytes:e,wal:!1};let t=new Uint8Array(e);return t[18]=1,t[19]=1,{bytes:t,wal:!0}}var Ie=`SQLite format 3\0`;function Le(e){if(e.byteLength===0)return null;if(e.byteLength<100)return r.t(`services.sqliteFile.tooSmall`);if(String.fromCharCode(...e.subarray(0,16))!==Ie)return r.t(`services.sqliteFile.notSqlite`);let t=e[16]<<8|e[17],n=t===1?65536:t;return n<512||n&n-1?r.t(`services.sqliteFile.badPageSize`,{size:n}):null}async function Re(e){let t=Le(e);if(t)throw Error(t);let n=await G(),i=new n.oo1.DB;if(e.byteLength===0)return i;let a=n.wasm.allocFromTypedArray(e),o=n.capi,s=o.SQLITE_DESERIALIZE_FREEONCLOSE??1,c=o.SQLITE_DESERIALIZE_RESIZEABLE??2,l=n.capi.sqlite3_deserialize(i.pointer,`main`,a,e.byteLength,e.byteLength,s|c);i.checkRc(l);try{i.exec(`SELECT count(*) FROM sqlite_master`)}catch(e){throw i.close(),Error(r.t(`services.sqliteFile.unreadable`,{message:e instanceof Error?e.message:String(e)}))}return i}async function ze(e){let t=window.showOpenFilePicker;if(t)try{let n=await t({multiple:e.multiple,types:e.sqliteOnly?[{description:r.t(`services.sqliteFile.pickerDescription`),accept:{"application/vnd.sqlite3":[`.sqlite`,`.sqlite3`,`.db`,`.db3`]}}]:void 0,excludeAcceptAllOption:!1});return Promise.all(n.map(async e=>({file:await e.getFile(),handle:e})))}catch(e){if(e instanceof DOMException&&e.name===`AbortError`)return[];throw e}return new Promise(t=>{let n=document.createElement(`input`);n.type=`file`,n.multiple=e.multiple,e.sqliteOnly&&(n.accept=`.sqlite,.sqlite3,.db,.db3,application/vnd.sqlite3`),n.onchange=()=>t(Array.from(n.files??[]).map(e=>({file:e}))),n.oncancel=()=>t([]),n.click()})}async function Be(){let e=await ze({multiple:!0,sqliteOnly:!1}),t=e.find(e=>!U(e.file.name));return t?{main:t,wal:e.find(e=>U(e.file.name)&&e.file.name.toLowerCase()===`${t.file.name.toLowerCase()}-wal`)??e.find(e=>U(e.file.name))}:null}async function Ve(){let[e]=await ze({multiple:!1,sqliteOnly:!1});return e??null}async function q(e,t,n={}){let{bytes:r,wal:i}=Fe(e),a=await Re(r),o=`${ke}${crypto.randomUUID()}`,s={...t,wal:i};return W.set(o,{db:a,source:s,rawBytes:e,profileId:n.profileId,fileMeta:n.fileMeta??{lastModified:0,size:e.byteLength},dirty:n.dirty??!1,flushTimer:null}),{connectionId:o,source:s}}async function J(e,t,n,r={}){let i=e?new Uint8Array(await e.arrayBuffer()):new Uint8Array,a=i,o=!1;n&&(a=j(i,new Uint8Array(await n.file.arrayBuffer())).bytes,o=!0);let s=await q(a,{name:e?.name??`:memory:`,handle:t,walApplied:o,walHandle:n?.handle},{profileId:r.profileId,fileMeta:{lastModified:Math.max(e?.lastModified??0,n?.file.lastModified??0),size:i.byteLength}});return W.get(s.connectionId).rawBytes=i,r.profileId&&H(s.connectionId),s}async function He(e,t,n,r){return await q(t,{name:n.name,handle:r,walApplied:!0},{profileId:e,fileMeta:{lastModified:n.lastModified,size:n.size},dirty:n.dirty})}function Ue(e,t){let n=K(e);n.source={...n.source,handle:t}}function We(e){return W.get(e)?.dirty??!1}async function Ge(e,t){let n=K(e),r=j(n.rawBytes,new Uint8Array(await t.file.arrayBuffer())),i=await q(r.bytes,{...n.source,walApplied:!0,walHandle:t.handle},{profileId:n.profileId,fileMeta:n.fileMeta});return W.get(i.connectionId).rawBytes=n.rawBytes,X(e),n.profileId&&H(i.connectionId),{...i,appliedFrames:r.appliedFrames}}function Y(e){return W.get(e)?.source??null}function Ke(e){return e&&e.trim().toLowerCase().replace(/\(.*$/,``).trim()||null}function qe(e){return e==null?`null`:typeof e==`number`?Number.isInteger(e)?`integer`:`real`:typeof e==`bigint`?`bigint`:e instanceof Uint8Array?`blob`:`text`}function Je(e){return typeof e==`bigint`?Number(e):e instanceof Uint8Array?{type:`Buffer`,data:Array.from(e)}:e}async function Ye(e,t){let{db:n}=K(e),r=await G(),i=performance.now(),a=K(e),o=Number(r.capi.sqlite3_total_changes(n.pointer)),s=n.prepare(t);try{if(s.columnCount===0){s.step();let c=Number(n.changes()),l=Number(r.capi.sqlite3_last_insert_rowid(n.pointer)),u=/^\s*(BEGIN|COMMIT|END|ROLLBACK|SAVEPOINT|RELEASE)\b/i.test(t);return(c>0||Number(r.capi.sqlite3_total_changes(n.pointer))!==o||!u)&&(a.dirty=!0,je(e)),{success:!0,fields:[],records:[],affectedRows:c,insertId:l,isResultQuery:!1,execTime:Math.round(performance.now()-i)}}let c=[];for(;s.step();)c.push(s.get([]).map(Je));let l=s.getColumnNames(),u=r.capi,d=s.pointer;return{success:!0,fields:l.map((e,t)=>{let n=Ke(u.sqlite3_column_decltype(d,t)),r=u.sqlite3_column_table_name(d,t)??``;return{name:e,orgName:u.sqlite3_column_origin_name(d,t)??e,type:n??qe(Xe(c,t)),table:r,orgTable:r,db:u.sqlite3_column_database_name(d,t)??``,maxLength:0}}),records:c,affectedRows:0,insertId:0,isResultQuery:!0,execTime:Math.round(performance.now()-i)}}finally{s.finalize()}}function Xe(e,t){for(let n of e){let e=n[t];if(e!=null)return e}return null}async function Ze(e){let{db:t}=K(e);return(await G()).capi.sqlite3_js_db_export(t.pointer)}function Qe(e){let t=W.get(e);if(!t?.source.handle)return null;let{source:n}=t;return n.wal&&!n.walApplied&&!n.walAcknowledged?r.t(`services.sqliteFile.walNotLoaded`):null}function $e(e){let t=K(e);t.source={...t.source,walAcknowledged:!0}}async function et(e){let{source:t,fileMeta:n}=e;if(!t.handle)return;let i=await t.handle.getFile();if(n.lastModified&&(i.lastModified!==n.lastModified||i.size!==n.size))throw Error(r.t(`services.sqliteFile.changedOnDisk`,{name:t.name}));if(t.walHandle)try{let e=await t.walHandle.getFile();if(e.size>0&&!t.walApplied)throw Error(r.t(`services.sqliteFile.walHasChanges`,{name:t.name}));if(e.size>0&&t.walApplied&&e.lastModified>n.lastModified)throw Error(r.t(`services.sqliteFile.walChangedOnDisk`,{name:t.name}))}catch(e){if(e instanceof Error&&!(e instanceof DOMException))throw e}}async function tt(e){let t=K(e),{source:n}=t,i=Qe(e);if(i)throw Error(i);n.handle&&await et(t);let a=await Ze(e);if(n.handle){if(!await R(n.handle,!0))throw Error(r.t(`services.sqliteFile.writeDenied`,{name:n.name}));let t=await n.handle.createWritable();await t.write(a),await t.close(),n.walHandle&&await(await n.walHandle.createWritable()).close();let i=K(e);i.dirty=!1;try{let e=await n.handle.getFile();i.fileMeta={lastModified:e.lastModified,size:e.size}}catch{i.fileMeta={lastModified:Date.now(),size:a.byteLength}}return i.profileId&&De(i.profileId,{...Me(i)}),`in-place`}let o=new Blob([a],{type:`application/vnd.sqlite3`}),s=URL.createObjectURL(o),c=document.createElement(`a`);return c.href=s,c.download=n.name===`:memory:`?`database.sqlite`:n.name,c.click(),URL.revokeObjectURL(s),`download`}function X(e){let t=W.get(e);t&&(t.flushTimer&&clearTimeout(t.flushTimer),t.db.close(),W.delete(e))}function Z(e){return W.get(e)?.profileId}async function nt(e){await L(e),await L(P(e)),await Oe(e)}async function rt(e,t){let n=await I(e);if(!n)return null;if(!await R(n,t))return`denied`;try{return{handle:n,file:await n.getFile()}}catch(t){if(t instanceof DOMException&&(t.name===`NotFoundError`||t.name===`NotAllowedError`))return await L(e),null;throw t}}async function it(e,t){let n=await I(P(e));if(!(!n||!await R(n,t)))try{return{file:await n.getFile(),handle:n}}catch{await L(P(e));return}}async function at(e,t){let n={remembered:!0,fromCache:!1,restoredUnsaved:!1,fileDetached:!1,diskChanged:!1},r=await Te(e),i=await rt(e,t.interactive),a=i&&i!==`denied`?i.handle:void 0,o=i&&i!==`denied`?i.file:null;if(r?.meta.dirty){let{connectionId:t,source:i}=await He(e,r.bytes,r.meta,a),s=o?o.lastModified!==r.meta.lastModified||o.size!==r.meta.size:!1;return{...n,connectionId:t,fileName:i.name,wal:i.wal,walApplied:i.walApplied,fromCache:!0,restoredUnsaved:!0,fileDetached:!a,diskChanged:s}}if(o&&a){let{connectionId:r,source:i}=await J(o,a,await it(e,t.interactive),{profileId:e});return{...n,connectionId:r,fileName:i.name,wal:i.wal,walApplied:i.walApplied}}if(r){let{connectionId:t,source:i}=await He(e,r.bytes,r.meta);return{...n,connectionId:t,fileName:i.name,wal:i.wal,walApplied:i.walApplied,fromCache:!0,fileDetached:!0}}if(!t.interactive)return null;let s=await Be();if(!s)return null;let{connectionId:c,source:l}=await J(s.main.file,s.main.handle,s.wal,{profileId:e});return s.main.handle?await F(e,s.main.handle):await L(e),s.wal?.handle?await F(P(e),s.wal.handle):await L(P(e)),{...n,connectionId:c,fileName:l.name,wal:l.wal,walApplied:l.walApplied,remembered:!1}}var ot=`SQLite format 3\0`;async function st(e){if(e.size===0)return!0;if(e.size<100)return!1;let t=new Uint8Array(await e.slice(0,16).arrayBuffer());return String.fromCharCode(...t)===ot}async function ct(e,t){try{let n=await I(e);return n?await n.isSameEntry(t):!1}catch{return!1}}async function lt(n){let i=n.find(e=>!U(e.file.name));if(!i)return;if(!await st(i.file))throw Error(r.t(`app.dropNotSqlite`,{name:i.file.name}));let a=n.find(e=>U(e.file.name)&&e.file.name.toLowerCase()===`${i.file.name.toLowerCase()}-wal`),o=l.getState(),s;for(let e of o.savedConnections)if(!(e.dbms!==`sqlite`||(e.transport??`browser`)!==`browser`||e.sample||e.file!==i.file.name)&&i.handle&&await ct(e.id,i.handle)){s=e;break}let c=s??{id:crypto.randomUUID(),hostName:i.file.name.replace(/\.(db|sqlite|sqlite3|db3)$/i,``),host:``,user:``,pass:``,charset:`utf8`,port:0,dbms:`sqlite`,transport:`browser`,file:i.file.name,autoConnection:!1,savePassword:!0,authToken:``};e(`sqlite_file_drop`,{reused:!!s,wal:!!a,handle:!!i.handle});let d=o.activeConnections.some(e=>e.id===c.id),f=o.activeConnections.find(e=>e.id===c.id)?.serverConnectionId,{connectionId:p}=await J(i.file,i.handle,a,{profileId:c.id});f&&f!==p&&V(f)&&X(f),i.handle?await F(c.id,i.handle):await L(c.id),a?.handle?await F(P(c.id),a.handle):await L(P(c.id)),s||o.addSavedConnection(c),o.openConnection({...c,serverConnectionId:p}),o.setPendingReopen(c.id,!1),o.setFileDetached(c.id,!1),d?ve.getState().removeTree(c.id):u.getState().addQueryTab(c.id,{id:`tab-${Date.now()}`,title:r.t(`connection.dialog.firstQueryTab`),query:``,database:``,isExecuting:!1,results:[],error:null,executionTime:null}),t.getState().setWelcomeVisible(!1)}async function ut(e,t){let n=await rt(e,!0);return!n||n===`denied`?!1:(Ue(t,n.handle),!0)}async function dt(e){let t=Z(e),n=Y(e);return n&&!n.handle&&t&&await ut(t,e),tt(e)}function ft(e){let t=Y(e);return t?t.name===`:memory:`?r.t(`services.save.inMemory`):typeof window<`u`&&!(`showOpenFilePicker`in window)?r.t(`services.save.noFileSystemAccess`):!t.handle&&!Z(e)?r.t(`services.save.noWritableHandle`):null:r.t(`services.save.notBrowserSqlite`)}async function pt(e,t){let n=await Ve();if(!n)return null;let r=await Ge(t,n);return n.handle&&await F(P(e),n.handle),{connectionId:r.connectionId,appliedFrames:r.appliedFrames}}function mt(e){if(!V(e))return null;let t=Y(e);return t?{wal:t.wal,walApplied:t.walApplied,walAcknowledged:t.walAcknowledged??!1}:null}function ht(e){return e.dbms===`sqlite`&&e.transport===`browser`?`browser`:`tunnel`}async function gt(e,t){return C(e,t)}async function _t(e,t){return ge(e,t)}async function vt(e,t,n){let r=e=>({success:!1,fields:[],records:[],affectedRows:0,insertId:0,isResultQuery:!1,execTime:0,message:e instanceof Error?e.message:String(e)});if(V(e))try{return await Ye(e,t)}catch(e){return r(e)}let i=Q.get(e)??e;try{return await w(i,t,n)}catch(e){if(!(e instanceof x)||e.status!==404)return r(e);let a=await yt(i);if(!a)return r(e);try{return await w(a,t,n)}catch(e){return r(e)}}}var Q=new Map,$=new Map;function yt(e){let n=$.get(e);if(n)return n;let i=(async()=>{let n=l.getState(),i=n.activeConnections.find(t=>t.serverConnectionId===e||Q.get(t.serverConnectionId??``)===e);if(!i||ht(i)===`browser`||se())return null;if(i.serverConnectionId&&i.serverConnectionId!==e&&!Q.has(i.serverConnectionId))return Q.set(e,i.serverConnectionId),i.serverConnectionId;let a=n.resolveCredentials(i),o=a.ssh?.enabled&&a.ssh.auth===`password`&&!a.ssh.password;if(!a.pass&&i.pass===``&&i.dbms!==`sqlite`||o)return null;try{let n=await C(v(a),a.authToken||void 0);if(!n.success||!n.connectionId)return null;for(let[t,r]of Q)r===e&&Q.set(t,n.connectionId);return Q.set(e,n.connectionId),l.getState().updateServerConnectionId(i.id,n.connectionId),l.getState().setTransactionOpen(i.id,!1),t.getState().setFooterMessage(r.t(`services.agent.reconnected`,{name:i.hostName||i.host||i.databaseId||i.file||i.id})),n.connectionId}catch{return null}})();return $.set(e,i),i.finally(()=>$.delete(e)),i}async function bt(e){if(V(e)){let t=Z(e);X(e),t&&await Oe(t);return}return he(e)}function xt(e){return async(t,n)=>{let i=await vt(e,t,n);if(!i.success)throw Error(i.message??r.t(`services.query.failed`));return i}}export{ee as A,ne as C,pe as D,oe as E,d as M,v as O,ce as S,fe as T,V as _,bt as a,ve as b,mt as c,lt as d,ut as f,Qe as g,$e as h,ft as i,p as j,f as k,ht as l,_t as m,gt as n,vt as o,dt as p,xt as r,nt as s,at as t,pt as u,We as v,le as w,se as x,J as y};
|
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
var e=/^(?:-?\d+(?:\.\d+)?|null|true|false|current_(?:timestamp|date|time)(?:\(\d*\))?|now\(\)|b'[01]+'|x'[0-9a-f]*')$/i;function t(t,n){let r=t.trim();return r===``?n(``):e.test(r)||/^'.*'$/s.test(r)||/^".*"$/s.test(r)||r.includes(`(`)||r.includes(`::`)?r:n(r)}function n(e,n,r){let i=n.upperCaseTypes?e.type.toUpperCase():e.type;return e.nullable?n.modify===`mssql`&&(i+=` NULL`):i+=` NOT NULL`,e.defaultValue!==null&&!/auto_increment|identity/i.test(e.extra)&&(i+=` DEFAULT ${t(e.defaultValue,r)}`),n.mysqlAttributes&&(/auto_increment/i.test(e.extra)&&(i+=` AUTO_INCREMENT`),e.comment&&(i+=` COMMENT ${r(e.comment)}`)),i}function r({quoteIdentifier:e,quoteLiteral:r,qualify:i},a){let o=e=>n(e,a,r),s=(t,n)=>a.qualifiedIndexNames?i(t,n):e(n);return{addColumn(t,n,r){let s=`${e(r.name)} ${o(r)}`;return a.addColumn===`ADD (`?`ALTER TABLE ${i(t,n)} ADD (${s});`:`ALTER TABLE ${i(t,n)} ${a.addColumn} ${s};`},alterColumn(n,s,c){let l=i(n,s),u=e(c.name);switch(a.modify){case`mysql`:return`ALTER TABLE ${l} MODIFY COLUMN ${u} ${o(c)};`;case`oracle`:return`ALTER TABLE ${l} MODIFY (${u} ${o(c)});`;case`mssql`:return`ALTER TABLE ${l} ALTER COLUMN ${u} ${c.type}${c.nullable?` NULL`:` NOT NULL`};`;case`postgres`:return`ALTER TABLE ${l}\n ${[`ALTER COLUMN ${u} TYPE ${c.type}`,c.nullable?`ALTER COLUMN ${u} DROP NOT NULL`:`ALTER COLUMN ${u} SET NOT NULL`,c.defaultValue===null||/auto_increment|identity/i.test(c.extra)?`ALTER COLUMN ${u} DROP DEFAULT`:`ALTER COLUMN ${u} SET DEFAULT ${t(c.defaultValue,r)}`].join(`,
|
|
2
|
+
`)};`;case`none`:return null}},dropColumn(t,n,r){return`ALTER TABLE ${i(t,n)} DROP COLUMN ${e(r)};`},createIndex(t,n,r){let o=r.columns.map(e).join(`, `);if(r.type===`PRIMARY`)return`ALTER TABLE ${i(t,n)} ADD PRIMARY KEY (${o});`;let c=r.type===`UNIQUE`?`UNIQUE `:r.type===`FULLTEXT`&&a.fulltext?`FULLTEXT `:``,l=a.unqualifiedIndexTarget?e(n):i(t,n);return`CREATE ${c}INDEX ${s(t,r.name)} ON ${l} (${o});`},dropIndex(t,n,r){return a.dropIndexOnTable?`DROP INDEX ${e(r)} ON ${i(t,n)};`:`DROP INDEX ${s(t,r)};`},insertRows(t,n,o,s){let c=i(t,n),l=o.map(e).join(`, `),u=s.map(e=>`(${e.map(r).join(`, `)})`);return a.multiRowInsert?`INSERT INTO ${c} (${l}) VALUES\n${u.join(`,
|
|
3
|
+
`)};`:`INSERT ALL\n${u.map(e=>` INTO ${c} (${l}) VALUES ${e}`).join(`
|
|
4
|
+
`)}\nSELECT 1 FROM DUAL;`}}}var i={DATABASE:`database`,SCHEMA:`schema`,TABLE:`table`,VIEW:`view`,COLUMN:`column`,INDEX:`index`,PROCEDURE:`procedure`,FUNCTION:`function`,TRIGGER:`trigger`,EVENT:`event`,FOLDER:`folder`,USER:`user`};function a(e,t,n){let r=`${t}:${n.replaceAll(`/`,`⁄`)}`;return e?`${e}/${r}`:r}function o(e,t,n,r,i){return{id:a(e,t,n),type:t,text:n,isLeaf:r,isExpanded:!1,isLoading:!1,children:[],metadata:i}}var s=[{text:`Tables`,type:`TABLE`},{text:`Views`,type:`VIEW`},{text:`Procedures`,type:`PROCEDURE`,capability:`procedures`},{text:`Functions`,type:`FUNCTION`,capability:`functions`},{text:`Triggers`,type:`TRIGGER`,capability:`triggers`},{text:`Events`,type:`EVENT`,capability:`events`}],c=[`Columns`,`Indexes`],l={TABLE:i.TABLE,VIEW:i.VIEW,PROCEDURE:i.PROCEDURE,FUNCTION:i.FUNCTION,TRIGGER:i.TRIGGER,EVENT:i.EVENT};function u(e){return s.find(t=>t.type===e).text}function ee(e){return s.filter(t=>!t.capability||e.capabilities[t.capability]).map(e=>e.text)}function te(e,t,n){return ee(e).map(e=>o(t,i.FOLDER,e,!1,{...n,countable:!0}))}async function ne({engine:e,run:t},n){let{introspect:r}=e,a=n.metadata?.database??``,s={database:a,catalog:n.metadata?.catalog},c=(e,t,r)=>o(n.id,l[e],t,!0,{...s,...r});switch(n.text){case`Tables`:return(await r.listTables(t,a)).map(e=>o(n.id,i.TABLE,e.name,!1,{...s,table:e.name}));case`Views`:return(await r.listViews(t,a)).map(e=>c(`VIEW`,e));case`Procedures`:return(await r.listProcedures(t,a)).map(e=>c(`PROCEDURE`,e));case`Functions`:return(await r.listFunctions(t,a)).map(e=>c(`FUNCTION`,e));case`Triggers`:return r.listTriggerDetails?(await r.listTriggerDetails(t,a)).map(e=>c(`TRIGGER`,e.name,{table:e.table})):(await r.listTriggers(t,a)).map(e=>c(`TRIGGER`,e));case`Events`:return(await r.listEvents(t,a)).map(e=>c(`EVENT`,e));default:return[]}}function re(e){let t={database:e.metadata?.database,catalog:e.metadata?.catalog,table:e.text};return c.map(n=>o(e.id,i.FOLDER,n,!1,t))}async function ie({engine:e,run:t},n){let r=n.metadata?.database??``,a=n.metadata?.table;if(!a)return null;let s={database:r,catalog:n.metadata?.catalog,table:a};switch(n.text){case`Columns`:return(await e.introspect.listColumns(t,r,a)).map(e=>{let t=e.extra?` [${e.extra}]`:``;return o(n.id,i.COLUMN,`${e.name} ${e.type}${t}`,!0,{...s,column:e.name,key:e.key})});case`Indexes`:return(await e.introspect.listIndexes(t,r,a)).map(e=>o(n.id,i.INDEX,`${e.name} (${e.columns.join(`, `)})`,!0,{...s,index:e.name}));default:return null}}async function ae(e,t){switch(t.type){case i.FOLDER:return await ie(e,t)??ne(e,t);case i.TABLE:return re(t);default:return null}}function oe(e,t,n){let r=a(e,i.FOLDER,u(t));return[e,r,a(r,l[t],n)]}var se={async loadRoot({engine:e,run:t}){return(await e.introspect.listDatabases(t)).map(e=>o(null,i.DATABASE,e,!1,{database:e}))},async loadChildren(e,t){return t.type===i.DATABASE?te(e.engine,t.id,{database:t.text}):await ae(e,t)??[]},objectPath(e,t,n){return oe(a(null,i.DATABASE,e),t,n)},namespacePath(e){return[a(null,i.DATABASE,e)]}},ce=class extends Error{constructor(e,t){super(`${e} does not support ${t}`),this.name=`UnsupportedQueryError`}};function le(e,t,...n){let r=t.identifierQuote,i=t.identifierQuoteClose??r;return e.replace(/(.?)\{(\d+)\}(.?)/gs,(e,a,o,s)=>{let c=parseInt(o,10);if(c>=n.length)return e;let l=n[c];return a===r&&s===i?`${a}${l.replaceAll(i,i+i)}${s}`:a&&a===s&&t.stringQuotes.includes(a)?`${a}${d(l,a,t.backslashEscapes)}${s}`:`${a}${l}${s}`})}function d(e,t,n){let r=n?e.replaceAll(`\\`,`\\\\`):e;return r=r.replaceAll(t,t+t),r}function f(e){return String(e).padStart(2,`0`)}function ue(e){return`${e.getFullYear()}-${f(e.getMonth()+1)}-${f(e.getDate())} ${f(e.getHours())}:${f(e.getMinutes())}:${f(e.getSeconds())}`}var de=/^(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})/,fe=e=>Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``),pe=e=>`X'${e}'`;function me(e,t,n=!1,r=pe){if(e==null)return`NULL`;if(e instanceof Uint8Array)return r(fe(e));if(typeof e==`number`)return Number.isFinite(e)?String(e):`NULL`;if(typeof e==`bigint`)return e.toString();if(typeof e==`boolean`)return n?e?`TRUE`:`FALSE`:e?`1`:`0`;if(e instanceof Date)return`'${ue(e)}'`;let i;if(typeof e==`object`)try{i=JSON.stringify(e)}catch{i=String(e)}else{i=String(e);let t=i.match(de);t&&(i=`${t[1]} ${t[2]}`)}return`'${d(i,`'`,t)}'`}function p(e){let t=e.fields.map(e=>e.name);return e.records.map(e=>{let n={};return t.forEach((t,r)=>{n[t]=e[r]}),n})}function m(e,t=``){return e==null?t:String(e)}function h(e){return e==null?null:String(e)}function g(e){if(e==null||e===``)return null;let t=Number(e);return Number.isFinite(t)?t:null}function _(e,t){return e.trim()||t}function v(e){let t=e.identifierQuote,n=e.identifierQuoteClose??t,r=e=>`${t}${e.replaceAll(n,n+n)}${n}`,i=t=>me(t,e.syntax.backslashEscapes,e.booleanKeywords??!1,e.binaryLiteral),a=(e,t)=>e?`${r(e)}.${r(t)}`:r(t),o={identifierQuote:t,identifierQuoteClose:n,stringQuotes:e.syntax.doubleQuoteIsIdentifier?[`'`]:[`'`,`"`],backslashEscapes:e.syntax.backslashEscapes};return{id:e.id,label:e.label,capabilities:e.capabilities,introspect:e.introspect,tree:e.tree??se,defaultPort:e.defaultPort,syntax:e.syntax,limitClause:t=>e.syntax.limitStyle===`top`?`OFFSET 0 ROWS FETCH NEXT ${t} ROWS ONLY`:e.syntax.limitStyle===`fetch`?`FETCH FIRST ${t} ROWS ONLY`:`LIMIT ${t}`,quoteIdentifier:r,quoteLiteral:i,qualify:a,ddl:e.ddl({quoteIdentifier:r,quoteLiteral:i,qualify:a}),rowIdExpression:e.rowIdExpression,hasQuery(t){return e.queries[t]!==void 0},getQuery(t,...n){let r=e.queries[t];if(r===void 0)throw new ce(e.label,t);return le(r,o,...n)},getDataTypes:()=>e.dataTypes,getDataTypesToJSON:()=>e.dataTypes.map(e=>[e,e]),getFunctions:()=>e.functions,getReservedWords:()=>e.reservedWords}}var y=e=>`\`${e.replaceAll("`","``")}\``,b=(e,t)=>`${y(e)}.${y(t)}`,x=e=>`'${e.replace(/\\/g,`\\\\`).replace(/'/g,`''`)}'`;function he(e){let t=m(e).toUpperCase();return t===`PRI`||t===`UNI`||t===`MUL`?t:``}function ge(e,t,n){if(e===`PRIMARY`)return`PRIMARY`;let r=m(n).toUpperCase();return r===`FULLTEXT`?`FULLTEXT`:r===`SPATIAL`?`SPATIAL`:Number(t)===0?`UNIQUE`:`INDEX`}function _e(e){return{name:m(e.Name??e.TABLE_NAME),engine:h(e.Engine??e.ENGINE),rows:g(e.Rows??e.TABLE_ROWS),collation:h(e.Collation??e.TABLE_COLLATION),autoIncrement:h(e.Auto_increment??e.AUTO_INCREMENT),comment:m(e.Comment??e.TABLE_COMMENT),createTime:h(e.Create_time??e.CREATE_TIME),updateTime:h(e.Update_time??e.UPDATE_TIME),dataLength:g(e.Data_length??e.DATA_LENGTH)}}function ve(e){return{name:m(e.Field??e.COLUMN_NAME),type:m(e.Type??e.COLUMN_TYPE),nullable:m(e.Null??e.IS_NULLABLE).toUpperCase()===`YES`,key:he(e.Key??e.COLUMN_KEY),defaultValue:h(e.Default??e.COLUMN_DEFAULT),extra:m(e.Extra??e.EXTRA),comment:m(e.Comment??e.COLUMN_COMMENT),collation:h(e.Collation??e.COLLATION_NAME)}}function ye(e){let t=new Map;for(let n of e){let e=m(n.Table??n.TABLE_NAME),r=m(n.Key_name??n.INDEX_NAME),i=m(n.Column_name??n.COLUMN_NAME),a=t.get(e);a||(a=new Map,t.set(e,a));let o=a.get(r);o?o.columns.push(i):a.set(r,{name:r,type:ge(r,n.Non_unique??n.NON_UNIQUE,n.Index_type??n.INDEX_TYPE),columns:[i]})}return new Map(Array.from(t,([e,t])=>[e,Array.from(t.values())]))}var be={TABLE:`TABLE`,VIEW:`VIEW`,PROCEDURE:`PROCEDURE`,FUNCTION:`FUNCTION`,TRIGGER:`TRIGGER`,EVENT:`EVENT`},xe={async listDatabases(e){return(await e(`SHOW DATABASES`)).records.map(e=>m(e[0]))},async listTables(e,t){return p(await e(`SHOW TABLE STATUS FROM ${y(t)} WHERE ENGINE IS NOT NULL`,t)).map(_e)},async listViews(e,t){return(await e(`SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = ${x(t)} ORDER BY TABLE_NAME`,t)).records.map(e=>m(e[0]))},async listProcedures(e,t){return p(await e(`SHOW PROCEDURE STATUS WHERE DB = ${x(t)}`,t)).map(e=>m(e.Name))},async listFunctions(e,t){return p(await e(`SHOW FUNCTION STATUS WHERE DB = ${x(t)}`,t)).map(e=>m(e.Name))},async listTriggers(e,t){return p(await e(`SHOW TRIGGERS FROM ${y(t)}`,t)).map(e=>m(e.Trigger))},async listEvents(e,t){return(await e(`SELECT EVENT_NAME FROM INFORMATION_SCHEMA.EVENTS WHERE EVENT_SCHEMA = ${x(t)} ORDER BY EVENT_NAME`,t)).records.map(e=>m(e[0]))},async listColumns(e,t,n){return p(await e(`SHOW FULL COLUMNS FROM ${b(t,n)}`,t)).map(ve)},async listIndexes(e,t,n){return ye(p(await e(`SHOW INDEX FROM ${b(t,n)}`,t))).get(n)??[]},async listAllColumns(e,t){let n=await e(`SELECT TABLE_NAME, COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_KEY, COLUMN_DEFAULT,
|
|
5
|
+
EXTRA, COLUMN_COMMENT, COLLATION_NAME
|
|
6
|
+
FROM information_schema.COLUMNS
|
|
7
|
+
WHERE TABLE_SCHEMA = ${x(t)}
|
|
8
|
+
ORDER BY TABLE_NAME, ORDINAL_POSITION`,t),r=new Map;for(let e of p(n)){let t=m(e.TABLE_NAME),n=r.get(t)??[];n.push(ve(e)),r.set(t,n)}return r},async listAllIndexes(e,t){return ye(p(await e(`SELECT TABLE_NAME, INDEX_NAME, COLUMN_NAME, NON_UNIQUE, INDEX_TYPE
|
|
9
|
+
FROM information_schema.STATISTICS
|
|
10
|
+
WHERE TABLE_SCHEMA = ${x(t)}
|
|
11
|
+
ORDER BY TABLE_NAME, INDEX_NAME, SEQ_IN_INDEX`,t)))},async listForeignKeys(e,t){return(await e(`SELECT CONSTRAINT_NAME, TABLE_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
|
|
12
|
+
FROM information_schema.KEY_COLUMN_USAGE
|
|
13
|
+
WHERE TABLE_SCHEMA = ${x(t)} AND REFERENCED_TABLE_NAME IS NOT NULL
|
|
14
|
+
ORDER BY TABLE_NAME, CONSTRAINT_NAME, ORDINAL_POSITION`,t)).records.map(e=>({name:m(e[0]),table:m(e[1]),column:m(e[2]),refTable:m(e[3]),refColumn:m(e[4])}))},async getTableInfo(e,t,n){let r=p(await e(`SHOW TABLE STATUS FROM ${y(t)} LIKE ${x(n)}`,t));return r.length>0?_e(r[0]):null},async getPrimaryKeys(e,t,n){return p(await e(`SHOW KEYS FROM ${b(t,n)} WHERE Key_name = 'PRIMARY'`,t)).map(e=>m(e.Column_name))},async getCreateStatement(e,t,n,r){let i=await e(`SHOW CREATE ${be[n]} ${b(t,r)}`,t);if(i.records.length===0)return null;let a=i.fields.findIndex(e=>/^create /i.test(e.name)),o=i.records[0];return h(a>=0?o[a]:o.find(e=>/create/i.test(m(e))))}},Se={SELECT_ALL_USER:"SELECT * FROM `mysql`.`user`",SELECT_USER:'SELECT * FROM `mysql`.`user` WHERE user="{0}" AND host="{1}"',SELECT_COUNT:"SELECT COUNT(1) as cnt FROM `{0}`.`{1}`",CREATE_USER:'CREATE USER `{0}`@`{1}` IDENTIFIED BY "{2}"',DELETE_USER:"DROP USER `{0}`@`{1}`",GRANT:"GRANT {0} ON {3} TO `{1}`@`{2}` {4}",REVOKE:"REVOKE {0} ON {3} FROM `{1}`@`{2}`",RENAME_USER:"RENAME USER `{0}`@`{1}` TO `{2}`@`{3}`",USER_PRIV:'SELECT * FROM `mysql`.`user` WHERE USER = "{0}" AND HOST = "{1}"',USER_DATABASE_PRIV:'SELECT * FROM `mysql`.`db` WHERE USER = "{0}" AND HOST = "{1}"',USER_TABLE_PRIV:'SELECT Db, Table_name, Table_priv FROM `mysql`.`tables_priv` WHERE USER = "{0}" AND HOST = "{1}"',USER_COLUMN_PRIV:'SELECT Db, Table_name, Column_name, Column_priv FROM `mysql`.`columns_priv` WHERE USER = "{0}" AND HOST = "{1}"',USER_PROC_PRIV:'SELECT Db, Routine_name, Routine_type, Proc_priv FROM `mysql`.`procs_priv` WHERE USER = "{0}" AND HOST = "{1}"',SHOW_FULL_FIELDS:"SHOW FULL FIELDS FROM `{0}`.`{1}`",SHOW_DATABASE_VIEWS:"SHOW FULL TABLES FROM `{0}` WHERE TABLE_TYPE LIKE 'VIEW'",SHOW_DATABASE_TABLES:"SHOW FULL TABLES FROM `{0}` WHERE table_type = 'BASE TABLE'",SHOW_ADVANCED_PROPERTIES:'SHOW TABLE STATUS FROM `{0}` LIKE "{1}"',SHOW_DATABASE:`SHOW DATABASES`,ADD_INDEX:"CREATE {3} INDEX {2} ON `{0}`.`{1}`({4}) {5}",SHOW_INDEX:'SHOW INDEX FROM `{0}`.`{1}` WHERE key_name="{2}"',SHOW_INDEXES:"SHOW INDEX FROM `{0}`.`{1}`",DROP_INDEX:"DROP INDEX {2} ON `{0}`.`{1}`",DROP_PROCEDURE:"DROP PROCEDURE {2} `{0}`.`{1}`",DROP_FUNCTION:"DROP FUNCTION {2} `{0}`.`{1}`",DROP_TRIGGER:"DROP TRIGGER {2} `{0}`.`{1}`",DROP_EVENT:"DROP EVENT {2} `{0}`.`{1}`",DROP_VIEW:"DROP VIEW {2} `{0}`.`{1}`",SHOW_PROCEDURES:`SHOW PROCEDURE STATUS WHERE DB = "{0}"`,SHOW_FUNCTIONS:`SHOW FUNCTION STATUS WHERE DB = "{0}"`,SHOW_TRIGGERS:"SHOW TRIGGERS FROM `{0}`",SHOW_EVENTS:'SELECT `Event_name`,`Definer`,`Event_type`,`Execute_at`,`Interval_value`,`Interval_field`,`Starts`,`Ends`,`Status` FROM `INFORMATION_SCHEMA`.`EVENTS` WHERE `EVENT_SCHEMA` = "{0}"',SHOW_VIEWS:'SELECT `TABLE_NAME` AS View_name,`View_definition`,`Check_option`,`Is_updatable`,`Definer`,`Security_type` FROM `INFORMATION_SCHEMA`.`VIEWS` WHERE `TABLE_SCHEMA` = "{0}"',SHOW_DATABASE_DDL:"SHOW CREATE DATABASE `{0}`",SHOW_ALL_TABLE_STATUS:"SHOW TABLE STATUS FROM `{0}` WHERE ENGINE IS NOT NULL",SHOW_TABLE_STATUS:'SHOW TABLE STATUS FROM `{0}` like "{1}"',CHANGE_TABLE_TYPE:"ALTER TABLE `{0}`.`{1}` ENGINE = {2}",INSERT_TABLE:"INSERT INTO `{0}`.`{1}` ({2}) VALUES({3});",INSERT_TABLE_BULK:"INSERT INTO `{0}`.`{1}` ({2}) VALUES {3};",INSERT_DEFAULT_VALUES:"INSERT INTO `{0}`.`{1}` () VALUES ();",INSERT_ON_DUPLICATE:"INSERT INTO `{0}`.`{1}` ({2}) VALUES({3}) ON DUPLICATE KEY UPDATE {4}",UPDATE_TABLE:"UPDATE `{0}`.`{1}` SET {2} WHERE {3};",DELETE_TABLE:"DELETE FROM `{0}`.`{1}` WHERE {2};",SELECT_TABLE:"SELECT {2} FROM `{0}`.`{1}` {3};",TRUNCATE_TABLE:"TRUNCATE TABLE `{0}`.`{1}`",RENAME_TABLE:"RENAME TABLE `{0}`.`{1}` TO `{2}`.`{3}`",DROP_TABLE:"DROP TABLE {2} `{0}`.`{1}`",TABLE_CREATE_INFO:"SHOW CREATE TABLE `{0}`.`{1}`",TABLE_KEYS_INFO:"SHOW KEYS FROM `{0}`.`{1}`",INDEX_KEYS_INFO:'SHOW KEYS FROM `{0}`.`{1}` WHERE key_name="{2}"',CREATE_PROCEDURE:`DELIMITER $$
|
|
15
|
+
CREATE
|
|
16
|
+
/*[DEFINER = { user | CURRENT_USER }]*/
|
|
17
|
+
PROCEDURE \`{0}\`.\`{1}\`()
|
|
18
|
+
|
|
19
|
+
/* LANGUAGE SQL */
|
|
20
|
+
/* [NOT] DETERMINISTIC { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } */
|
|
21
|
+
/* SQL SECURITY { DEFINER | INVOKER } */
|
|
22
|
+
/* COMMENT 'string'*/
|
|
23
|
+
BEGIN
|
|
24
|
+
|
|
25
|
+
/* SQL Statements */
|
|
26
|
+
|
|
27
|
+
END$$
|
|
28
|
+
DELIMITER ;`,CREATE_FUNCTION:`DELIMITER $$
|
|
29
|
+
CREATE
|
|
30
|
+
/*[DEFINER = { user | CURRENT_USER }]*/
|
|
31
|
+
FUNCTION \`{0}\`.\`{1}\`()
|
|
32
|
+
RETURNS INT /*{STRING|INTEGER|REAL|DECIMAL}*/ /*LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } | COMMENT 'string'*/
|
|
33
|
+
BEGIN
|
|
34
|
+
|
|
35
|
+
/* SQL Statements */
|
|
36
|
+
|
|
37
|
+
END$$
|
|
38
|
+
DELIMITER ;`,CREATE_TRIGGER:`DELIMITER $$
|
|
39
|
+
CREATE
|
|
40
|
+
/*[DEFINER = { user | CURRENT_USER }]*/
|
|
41
|
+
TRIGGER \`{0}\`.\`{1}\`
|
|
42
|
+
BEFORE
|
|
43
|
+
-- AFTER
|
|
44
|
+
INSERT
|
|
45
|
+
-- UPDATE
|
|
46
|
+
-- DELETE
|
|
47
|
+
ON \`{0}\`.\`<Table Name>\` FOR EACH ROW
|
|
48
|
+
BEGIN
|
|
49
|
+
|
|
50
|
+
/* SQL Statements */
|
|
51
|
+
|
|
52
|
+
END$$
|
|
53
|
+
DELIMITER ;`,CREATE_EVENT:`DELIMITER $$
|
|
54
|
+
-- SET GLOBAL event_scheduler = ON$$
|
|
55
|
+
-- required for event to execute but not create
|
|
56
|
+
CREATE
|
|
57
|
+
/*[DEFINER = { user | CURRENT_USER }]*/
|
|
58
|
+
EVENT \`{0}\`.\`{1}\`
|
|
59
|
+
ON SCHEDULE EVERY 1 HOUR /* uncomment the example below you want to use */
|
|
60
|
+
-- scheduleexample 1: run once
|
|
61
|
+
-- AT 'YYYY-MM-DD HH:MM.SS'/CURRENT_TIMESTAMP { + INTERVAL 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...] }
|
|
62
|
+
-- scheduleexample 2: run at intervals forever after creation
|
|
63
|
+
-- scheduleexample 3: specified start time, end time and interval for execution
|
|
64
|
+
/*
|
|
65
|
+
EVERY 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...]
|
|
66
|
+
STARTS CURRENT_TIMESTAMP/'YYYY-MM-DD HH:MM.SS' { + INTERVAL 1[HOUR|MONTH|WEEK|DAY|MINUTE|...] }
|
|
67
|
+
ENDS CURRENT_TIMESTAMP/'YYYY-MM-DD HH:MM.SS' { + INTERVAL 1 [HOUR|MONTH|WEEK|DAY|MINUTE|...] }
|
|
68
|
+
*/
|
|
69
|
+
/*[ON COMPLETION [NOT] PRESERVE] [ENABLE | DISABLE] */
|
|
70
|
+
/* COMMENT 'comment' */
|
|
71
|
+
DO BEGIN
|
|
72
|
+
|
|
73
|
+
/* SQL Statements */
|
|
74
|
+
|
|
75
|
+
END$$
|
|
76
|
+
DELIMITER ;`,CREATE_VIEW:`CREATE
|
|
77
|
+
/* [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] */
|
|
78
|
+
/* DEFINER = user | CURRENT_USER */
|
|
79
|
+
/* SQL SECURITY { DEFINER | INVOKER }] */
|
|
80
|
+
VIEW \`{0}\`.\`{1}\` AS
|
|
81
|
+
/* SQL SELECT Statement */`,SHOW_CREATE_PROCEDURE:"SHOW CREATE PROCEDURE `{0}`.`{1}`",SHOW_CREATE_TABLE:"SHOW CREATE TABLE `{0}`.`{1}`",SHOW_CREATE_VIEW:"SHOW CREATE TABLE `{0}`.`{1}`",SHOW_CREATE_FUNCTION:"SHOW CREATE FUNCTION `{0}`.`{1}`",SHOW_CREATE_TRIGGER:"SHOW CREATE TRIGGER `{0}`.`{1}`",SHOW_CREATE_EVENT:"SHOW CREATE EVENT `{0}`.`{1}`",CREATE_TABLE:"CREATE TABLE `{0}`.`{1}` {2}",ALTER_TABLE:"ALTER TABLE `{0}`.`{1}` {2}",ALTER_VIEW:`DELIMITER $$
|
|
82
|
+
USE \`{0}\`$$
|
|
83
|
+
DROP VIEW IF EXISTS \`{1}\`$$
|
|
84
|
+
{2}$$
|
|
85
|
+
DELIMITER;`,ALTER_PROCEDURE:`DELIMITER $$
|
|
86
|
+
USE \`{0}\`$$
|
|
87
|
+
DROP PROCEDURE IF EXISTS \`{1}\`$$
|
|
88
|
+
{2}$$
|
|
89
|
+
DELIMITER;`,ALTER_FUNCTION:`DELIMITER $$
|
|
90
|
+
USE \`{0}\`$$
|
|
91
|
+
DROP FUNCTION IF EXISTS \`{1}\`$$
|
|
92
|
+
{2}$$
|
|
93
|
+
DELIMITER;`,ALTER_TRIGGER:`DELIMITER $$
|
|
94
|
+
USE \`{0}\`$$
|
|
95
|
+
DROP TRIGGER IF EXISTS \`{1}\`$$
|
|
96
|
+
{2}$$
|
|
97
|
+
DELIMITER;`,ALTER_EVENT:`DELIMITER $$
|
|
98
|
+
USE \`{0}\`$$
|
|
99
|
+
DROP EVENT IF EXISTS \`{1}\`$$
|
|
100
|
+
{2}$$
|
|
101
|
+
DELIMITER;`,SHOW_PROCESS_LIST:`SHOW FULL PROCESSLIST`,SHOW_VARIABLES:`SHOW VARIABLES`,SHOW_STATUS:`SHOW STATUS`,SHOW_GLOBAL_STATUS:`SHOW GLOBAL STATUS`,SHOW_SESSION_STATUS:`SHOW SESSION STATUS`,CREATE_DATABASE:"CREATE DATABASE `{0}` CHARACTER SET {1} COLLATE {2}",ALTER_DATABASE:"ALTER DATABASE `{0}` CHARACTER SET {1} COLLATE {2}",DROP_DATABASE:"DROP DATABASE `{0}`",CREATE_SCHEMA:"CREATE SCHEMA `{0}`",DROP_SCHEMA:"DROP SCHEMA `{0}`",SHOW_CHARSET:`SHOW CHARSET`,SHOW_COLLATION:`SHOW COLLATION`,SHOW_COLUMNS:"SHOW FULL COLUMNS FROM `{0}`.`{1}`",CHARSET_DATABASE:`SHOW VARIABLES LIKE 'character_set_database'`,COLLATION_DATABASE:`SHOW VARIABLES LIKE 'collation_database'`,KILL_QUERY:`KILL {0}`,SHOW_DATABASES:`SHOW DATABASES`,COPY_TABLE_STRUCTURE:"CREATE TABLE `{2}`.`{3}` LIKE `{0}`.`{1}`",COPY_TABLE_DATA:"INSERT `{2}`.`{3}` SELECT * FROM `{0}`.`{1}`",UPDATE_TABLE_SINGLE:"UPDATE `{0}`.`{1}` SET {2} WHERE {3} LIMIT 1",START_TRANSACTION:`START TRANSACTION`,COMMIT:`COMMIT`,ROLLBACK:`ROLLBACK`,SHOW_GLOBAL_VARIABLES:`SHOW GLOBAL VARIABLES`,SHOW_SESSION_VARIABLES:`SHOW SESSION VARIABLES`,DISABLE_FK_CHECKS:`SET FOREIGN_KEY_CHECKS = 0`,ENABLE_FK_CHECKS:`SET FOREIGN_KEY_CHECKS = 1`},Ce=`ASCII.BIN.BIT_LENGTH.CHAR.CHAR_LENGTH.CHARACTER_LENGTH.CONCAT.CONCAT_WS.ELT.EXPORT_SET.FIELD.FIND_IN_SET.FORMAT.FROM_BASE64.HEX.INSERT.INSTR.LCASE.LEFT.LENGTH.LOAD_FILE.LOCATE.LOWER.LPAD.LTRIM.MAKE_SET.MID.OCT.OCTET_LENGTH.ORD.POSITION.QUOTE.REGEXP_INSTR.REGEXP_LIKE.REGEXP_REPLACE.REGEXP_SUBSTR.REPEAT.REPLACE.REVERSE.RIGHT.RPAD.RTRIM.SOUNDEX.SPACE.STRCMP.SUBSTR.SUBSTRING.SUBSTRING_INDEX.TO_BASE64.TRIM.UCASE.UNHEX.UPPER.WEIGHT_STRING.ABS.ACOS.ASIN.ATAN.ATAN2.CEIL.CEILING.CONV.COS.COT.CRC32.DEGREES.EXP.FLOOR.LN.LOG.LOG10.LOG2.MOD.PI.POW.POWER.RADIANS.RAND.ROUND.SIGN.SIN.SQRT.TAN.TRUNCATE.ADDDATE.ADDTIME.CONVERT_TZ.CURDATE.CURRENT_DATE.CURRENT_TIME.CURRENT_TIMESTAMP.CURTIME.DATE.DATE_ADD.DATE_FORMAT.DATE_SUB.DATEDIFF.DAY.DAYNAME.DAYOFMONTH.DAYOFWEEK.DAYOFYEAR.EXTRACT.FROM_DAYS.FROM_UNIXTIME.GET_FORMAT.HOUR.LAST_DAY.LOCALTIME.LOCALTIMESTAMP.MAKEDATE.MAKETIME.MICROSECOND.MINUTE.MONTH.MONTHNAME.NOW.PERIOD_ADD.PERIOD_DIFF.QUARTER.SEC_TO_TIME.SECOND.STR_TO_DATE.SUBDATE.SUBTIME.SYSDATE.TIME.TIME_FORMAT.TIME_TO_SEC.TIMEDIFF.TIMESTAMP.TIMESTAMPADD.TIMESTAMPDIFF.TO_DAYS.TO_SECONDS.UNIX_TIMESTAMP.UTC_DATE.UTC_TIME.UTC_TIMESTAMP.WEEK.WEEKDAY.WEEKOFYEAR.YEAR.YEARWEEK.BINARY.CAST.COALESCE.CONVERT.GREATEST.IF.IFNULL.INTERVAL.ISNULL.LEAST.NULLIF.AVG.BIT_AND.BIT_OR.BIT_XOR.COUNT.GROUP_CONCAT.JSON_ARRAYAGG.JSON_OBJECTAGG.MAX.MIN.STD.STDDEV.STDDEV_POP.STDDEV_SAMP.SUM.VAR_POP.VAR_SAMP.VARIANCE.CUME_DIST.DENSE_RANK.FIRST_VALUE.LAG.LAST_VALUE.LEAD.NTH_VALUE.NTILE.PERCENT_RANK.RANK.ROW_NUMBER.JSON_ARRAY.JSON_ARRAY_APPEND.JSON_ARRAY_INSERT.JSON_CONTAINS.JSON_CONTAINS_PATH.JSON_DEPTH.JSON_EXTRACT.JSON_INSERT.JSON_KEYS.JSON_LENGTH.JSON_MERGE_PATCH.JSON_MERGE_PRESERVE.JSON_OBJECT.JSON_OVERLAPS.JSON_PRETTY.JSON_QUOTE.JSON_REMOVE.JSON_REPLACE.JSON_SCHEMA_VALID.JSON_SCHEMA_VALIDATION_REPORT.JSON_SEARCH.JSON_SET.JSON_STORAGE_FREE.JSON_STORAGE_SIZE.JSON_TABLE.JSON_TYPE.JSON_UNQUOTE.JSON_VALID.JSON_VALUE.AES_DECRYPT.AES_ENCRYPT.COMPRESS.MD5.RANDOM_BYTES.SHA.SHA1.SHA2.STATEMENT_DIGEST.STATEMENT_DIGEST_TEXT.UNCOMPRESS.UNCOMPRESSED_LENGTH.VALIDATE_PASSWORD_STRENGTH.BENCHMARK.CHARSET.COERCIBILITY.COLLATION.CONNECTION_ID.CURRENT_ROLE.CURRENT_USER.DATABASE.FOUND_ROWS.ICU_VERSION.LAST_INSERT_ID.ROLES_GRAPHML.ROW_COUNT.SCHEMA.SESSION_USER.SYSTEM_USER.USER.VERSION.ANY_VALUE.BIN_TO_UUID.DEFAULT.FORMAT_BYTES.FORMAT_PICO_TIME.GET_LOCK.GROUPING.GTID_SUBSET.GTID_SUBTRACT.INET_ATON.INET_NTOA.INET6_ATON.INET6_NTOA.IS_FREE_LOCK.IS_IPV4.IS_IPV4_COMPAT.IS_IPV4_MAPPED.IS_IPV6.IS_USED_LOCK.IS_UUID.NAME_CONST.PS_CURRENT_THREAD_ID.PS_THREAD_ID.RELEASE_ALL_LOCKS.RELEASE_LOCK.SLEEP.SOURCE_POS_WAIT.UUID.UUID_SHORT.UUID_TO_BIN.VALUES.WAIT_FOR_EXECUTED_GTID_SET.EXTRACTVALUE.UPDATEXML.GEOMETRYCOLLECTION.LINESTRING.MULTILINESTRING.MULTIPOINT.MULTIPOLYGON.POINT.POLYGON.MBRCONTAINS.MBRCOVEREDBY.MBRCOVERS.MBRDISJOINT.MBREQUALS.MBRINTERSECTS.MBROVERLAPS.MBRTOUCHES.MBRWITHIN.ST_AREA.ST_ASBINARY.ST_ASGEOJSON.ST_ASTEXT.ST_BUFFER.ST_CENTROID.ST_CONTAINS.ST_CROSSES.ST_DIFFERENCE.ST_DIMENSION.ST_DISJOINT.ST_DISTANCE.ST_DISTANCE_SPHERE.ST_ENDPOINT.ST_ENVELOPE.ST_EQUALS.ST_EXTERIORRING.ST_GEOHASH.ST_GEOMCOLLFROMTEXT.ST_GEOMETRYN.ST_GEOMETRYTYPE.ST_GEOMFROMGEOJSON.ST_GEOMFROMTEXT.ST_GEOMFROMWKB.ST_INTERIORRINGN.ST_INTERSECTION.ST_INTERSECTS.ST_ISCLOSED.ST_ISEMPTY.ST_ISSIMPLE.ST_ISVALID.ST_LATITUDE.ST_LENGTH.ST_LINEFROMTEXT.ST_LONGITUDE.ST_MAKEENVELOPE.ST_NUMGEOMETRIES.ST_NUMINTERIORRING.ST_NUMPOINTS.ST_OVERLAPS.ST_POINTFROMTEXT.ST_POINTN.ST_POLYFROMTEXT.ST_SIMPLIFY.ST_SRID.ST_STARTPOINT.ST_SWAPXY.ST_SYMDIFFERENCE.ST_TOUCHES.ST_TRANSFORM.ST_UNION.ST_VALIDATE.ST_WITHIN.ST_X.ST_Y`.split(`.`),we=`ACCESSIBLE.ADD.ALL.ALTER.ANALYZE.AND.AS.ASC.ASENSITIVE.BEFORE.BETWEEN.BIGINT.BINARY.BLOB.BOTH.BY.CALL.CASCADE.CASE.CHANGE.CHAR.CHARACTER.CHECK.COLLATE.COLUMN.CONDITION.CONSTRAINT.CONTINUE.CONVERT.CREATE.CROSS.CUBE.CUME_DIST.CURRENT_DATE.CURRENT_TIME.CURRENT_TIMESTAMP.CURRENT_USER.CURSOR.DATABASE.DATABASES.DAY_HOUR.DAY_MICROSECOND.DAY_MINUTE.DAY_SECOND.DEC.DECIMAL.DECLARE.DEFAULT.DELAYED.DELETE.DENSE_RANK.DESC.DESCRIBE.DETERMINISTIC.DISTINCT.DISTINCTROW.DIV.DOUBLE.DROP.DUAL.EACH.ELSE.ELSEIF.EMPTY.ENCLOSED.ESCAPED.EXCEPT.EXISTS.EXIT.EXPLAIN.FALSE.FETCH.FIRST_VALUE.FLOAT.FLOAT4.FLOAT8.FOR.FORCE.FOREIGN.FROM.FULLTEXT.FUNCTION.GENERATED.GET.GRANT.GROUP.GROUPING.GROUPS.HAVING.HIGH_PRIORITY.HOUR_MICROSECOND.HOUR_MINUTE.HOUR_SECOND.IF.IGNORE.IN.INDEX.INFILE.INNER.INOUT.INSENSITIVE.INSERT.INT.INT1.INT2.INT3.INT4.INT8.INTEGER.INTERSECT.INTERVAL.INTO.IO_AFTER_GTIDS.IO_BEFORE_GTIDS.IS.ITERATE.JOIN.JSON_TABLE.KEY.KEYS.KILL.LAG.LAST_VALUE.LATERAL.LEAD.LEADING.LEAVE.LEFT.LIKE.LIMIT.LINEAR.LINES.LOAD.LOCALTIME.LOCALTIMESTAMP.LOCK.LONG.LONGBLOB.LONGTEXT.LOOP.LOW_PRIORITY.MASTER_SSL_VERIFY_SERVER_CERT.MATCH.MAXVALUE.MEDIUMBLOB.MEDIUMINT.MEDIUMTEXT.MIDDLEINT.MINUTE_MICROSECOND.MINUTE_SECOND.MOD.MODIFIES.NATURAL.NOT.NO_WRITE_TO_BINLOG.NTH_VALUE.NTILE.NULL.NUMERIC.OF.ON.OPTIMIZE.OPTIMIZER_COSTS.OPTION.OPTIONALLY.OR.ORDER.OUT.OUTER.OUTFILE.OVER.PARTITION.PERCENT_RANK.PRECISION.PRIMARY.PROCEDURE.PURGE.RANGE.RANK.READ.READS.READ_WRITE.REAL.RECURSIVE.REFERENCES.REGEXP.RELEASE.RENAME.REPEAT.REPLACE.REQUIRE.RESIGNAL.RESTRICT.RETURN.REVOKE.RIGHT.RLIKE.ROW.ROWS.ROW_NUMBER.SCHEMA.SCHEMAS.SECOND_MICROSECOND.SELECT.SENSITIVE.SEPARATOR.SET.SHOW.SIGNAL.SMALLINT.SPATIAL.SPECIFIC.SQL.SQLEXCEPTION.SQLSTATE.SQLWARNING.SQL_BIG_RESULT.SQL_CALC_FOUND_ROWS.SQL_SMALL_RESULT.SSL.STARTING.STORED.STRAIGHT_JOIN.SYSTEM.TABLE.TERMINATED.THEN.TINYBLOB.TINYINT.TINYTEXT.TO.TRAILING.TRIGGER.TRUE.UNDO.UNION.UNIQUE.UNLOCK.UNSIGNED.UPDATE.USAGE.USE.USING.UTC_DATE.UTC_TIME.UTC_TIMESTAMP.VALUES.VARBINARY.VARCHAR.VARCHARACTER.VARYING.VIRTUAL.WHEN.WHERE.WHILE.WINDOW.WITH.WRITE.XOR.YEAR_MONTH.ZEROFILL`.split(`.`),Te=`AUTO_INCREMENT.BEGIN.CHARSET.COMMENT.COMMIT.DO.END.ENGINE.EVENT.FIRST.FOLLOWING.IF EXISTS.IF NOT EXISTS.INVISIBLE.LAST.NULLS.OFFSET.PRECEDING.ROLLBACK.SAVEPOINT.START TRANSACTION.TEMPORARY.TRANSACTION.TRUNCATE.UNBOUNDED.VIEW.VISIBLE.CROSS JOIN.GROUP BY.INNER JOIN.INSERT INTO.LEFT JOIN.ON DUPLICATE KEY UPDATE.ORDER BY.PARTITION BY.RIGHT JOIN.UNION ALL`.split(`.`),Ee=`tinyint.smallint.mediumint.int.integer.bigint.decimal.numeric.float.double.bit.bool.boolean.date.datetime.timestamp.time.year.char.varchar.binary.varbinary.tinyblob.blob.mediumblob.longblob.tinytext.text.mediumtext.longtext.enum.set.json.geometry.point.linestring.polygon.multipoint.multilinestring.multipolygon.geometrycollection`.split(`.`),De={hashComments:!0,dashCommentNeedsSpace:!0,backslashEscapes:!0,doubleQuoteIsIdentifier:!1,bracketIdentifiers:!1,delimiterCommand:!0,dollarQuotes:!1,goBatchSeparator:!1,limitStyle:`limit`,plsqlBlocks:!1};function Oe(e){let{quoteIdentifier:t,quoteLiteral:n,qualify:i}=e;return{...r(e,{addColumn:`ADD COLUMN`,modify:`mysql`,qualifiedIndexNames:!1,dropIndexOnTable:!0,unqualifiedIndexTarget:!1,multiRowInsert:!0,mysqlAttributes:!0,fulltext:!0,upperCaseTypes:!1}),createTable(e){if(!e.name&&e.columns.length===0)return`-- Define a table name and columns to generate SQL.`;let r=e.columns.map(e=>{let r=` ${t(_(e.name,`column`))} ${e.type.toUpperCase()}`;return e.length&&(r+=`(${e.length})`),e.unsigned&&(r+=` UNSIGNED`),e.zerofill&&(r+=` ZEROFILL`),e.notNull&&(r+=` NOT NULL`),e.autoIncrement&&(r+=` AUTO_INCREMENT`),e.defaultValue&&(r+=` DEFAULT ${e.defaultValue}`),e.comment&&(r+=` COMMENT ${n(e.comment)}`),r}),a=e.columns.filter(e=>e.primaryKey).map(e=>t(e.name));a.length>0&&r.push(` PRIMARY KEY (${a.join(`, `)})`);for(let n of e.indexes){if(n.type===`PRIMARY`)continue;let e=n.columns.map(t).join(`, `),i=n.type===`UNIQUE`?`UNIQUE KEY`:n.type===`FULLTEXT`?`FULLTEXT KEY`:`KEY`;r.push(` ${i} ${t(n.name)} (${e})`)}let o=[];return e.options.engine&&o.push(`ENGINE=${e.options.engine}`),e.options.charset&&o.push(`DEFAULT CHARSET=${e.options.charset}`),e.options.collation&&o.push(`COLLATE=${e.options.collation}`),e.options.autoIncrement&&o.push(`AUTO_INCREMENT=${e.options.autoIncrement}`),e.options.comment&&o.push(`COMMENT=${n(e.options.comment)}`),`CREATE TABLE ${i(e.database,_(e.name,`untitled`))} (\n${r.join(`,
|
|
102
|
+
`)}\n)${o.length?` `+o.join(` `):``};`}}}var S={id:`mysql`,label:`MySQL`,capabilities:{multipleDatabases:!0,users:!0,procedures:!0,functions:!0,triggers:!0,events:!0,processList:!0,variables:!0,status:!0,flush:!0,tableProperties:!0,implicitCommitDdl:!0,transactions:!0},introspect:xe,ddl:Oe,identifierQuote:"`",defaultPort:3306,queries:Se,syntax:De,dataTypes:Ee,functions:Ce,reservedWords:[...we,...Te]},C=v(S),ke=new Set(`REGEXP_LIKE.JSON_SCHEMA_VALIDATION_REPORT.JSON_STORAGE_FREE.JSON_STORAGE_SIZE.STATEMENT_DIGEST.STATEMENT_DIGEST_TEXT.VALIDATE_PASSWORD_STRENGTH.ICU_VERSION.ROLES_GRAPHML.ANY_VALUE.BIN_TO_UUID.UUID_TO_BIN.IS_UUID.GROUPING.FORMAT_BYTES.FORMAT_PICO_TIME.PS_CURRENT_THREAD_ID.PS_THREAD_ID.SOURCE_POS_WAIT.WAIT_FOR_EXECUTED_GTID_SET.ST_GEOHASH.ST_LATITUDE.ST_LONGITUDE.ST_MAKEENVELOPE.ST_SIMPLIFY.ST_TRANSFORM.ST_VALIDATE.ST_SWAPXY.CUBE.CUME_DIST.DENSE_RANK.EMPTY.FIRST_VALUE.GENERATED.GET.GROUPS.IO_AFTER_GTIDS.IO_BEFORE_GTIDS.JSON_TABLE.LAG.LAST_VALUE.LATERAL.LEAD.NTH_VALUE.NTILE.OF.OPTIMIZER_COSTS.PERCENT_RANK.RANK.STORED.SYSTEM.VIRTUAL`.split(`.`)),Ae=`ADD_MONTHS.BINLOG_GTID_POS.COLUMN_ADD.COLUMN_CHECK.COLUMN_CREATE.COLUMN_DELETE.COLUMN_EXISTS.COLUMN_GET.COLUMN_JSON.COLUMN_LIST.CRC32C.DECODE.DECODE_ORACLE.DES_DECRYPT.DES_ENCRYPT.ENCODE.ENCRYPT.JSON_ARRAY_INTERSECT.JSON_COMPACT.JSON_DETAILED.JSON_EQUALS.JSON_EXISTS.JSON_KEY_VALUE.JSON_LOOSE.JSON_NORMALIZE.JSON_OBJECT_FILTER_KEYS.JSON_OBJECT_TO_ARRAY.JSON_QUERY.KDF.LASTVAL.MASTER_GTID_WAIT.MASTER_POS_WAIT.MEDIAN.NATURAL_SORT_KEY.NEXTVAL.NVL.NVL2.OLD_PASSWORD.PASSWORD.PERCENTILE_CONT.PERCENTILE_DISC.ROWNUM.SETVAL.SFORMAT.SYS_GUID.TO_CHAR.TRIM_ORACLE.VALUE`.split(`.`),je=[`DELETE_DOMAIN_ID`,`DO_DOMAIN_IDS`,`IGNORE_DOMAIN_IDS`,`IGNORE_SERVER_IDS`,`MASTER_HEARTBEAT_PERIOD`,`OFFSET`,`PAGE_CHECKSUM`,`PARSE_VCOL_EXPR`,`POSITION`,`REF_SYSTEM_ID`,`RETURNING`,`SLOW`,`STATS_AUTO_RECALC`,`STATS_PERSISTENT`,`STATS_SAMPLE_PAGES`,`SEQUENCE`,`SYSTEM_TIME`,`SYSTEM_VERSIONING`,`WITHOUT`],w=e=>e.filter(e=>!ke.has(e)),T=e=>[...new Set(e)],E=v({...S,id:`maria`,label:`MariaDB`,dataTypes:[...Ee,`inet4`,`inet6`,`uuid`],functions:T([...w(Ce),...Ae]).sort(),reservedWords:T([...w(we),...je,...Te])}),D=e=>`"${e.replaceAll(`"`,`""`)}"`,Me=(e,t)=>`${D(e)}.${D(t)}`,O=e=>`'${e.replace(/'/g,`''`)}'`,Ne=`n.nspname NOT LIKE 'pg\\_%' AND n.nspname <> 'information_schema'`;async function Pe(e,t,n){return(await e(`SELECT c.relname FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
103
|
+
WHERE n.nspname = ${O(t)} AND c.relkind IN (${n.map(O).join(`, `)}) ORDER BY c.relname`)).records.map(e=>m(e[0]))}async function Fe(e,t,n){return(await e(`SELECT DISTINCT p.proname FROM pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace
|
|
104
|
+
WHERE n.nspname = ${O(t)} AND p.prokind = ${O(n)} ORDER BY p.proname`)).records.map(e=>m(e[0]))}async function k(e,t,n){return p(await e(`SELECT c.relname AS table_name, a.attname AS name,
|
|
105
|
+
format_type(a.atttypid, a.atttypmod) AS type,
|
|
106
|
+
NOT a.attnotnull AS nullable,
|
|
107
|
+
pg_get_expr(d.adbin, d.adrelid) AS default_value,
|
|
108
|
+
a.attidentity <> '' AS identity,
|
|
109
|
+
col_description(a.attrelid, a.attnum) AS comment,
|
|
110
|
+
CASE WHEN a.attcollation <> t.typcollation THEN co.collname END AS collation
|
|
111
|
+
FROM pg_attribute a
|
|
112
|
+
JOIN pg_class c ON c.oid = a.attrelid
|
|
113
|
+
JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
114
|
+
JOIN pg_type t ON t.oid = a.atttypid
|
|
115
|
+
LEFT JOIN pg_attrdef d ON d.adrelid = a.attrelid AND d.adnum = a.attnum
|
|
116
|
+
LEFT JOIN pg_collation co ON co.oid = a.attcollation
|
|
117
|
+
WHERE n.nspname = ${O(t)} AND c.relkind IN ('r', 'p', 'v', 'm', 'f')
|
|
118
|
+
AND a.attnum > 0 AND NOT a.attisdropped${n?` AND c.relname = ${O(n)}`:``}
|
|
119
|
+
ORDER BY c.relname, a.attnum`)).map(e=>({table:m(e.table_name),name:m(e.name),type:m(e.type),nullable:e.nullable===!0||e.nullable===`t`,defaultValue:h(e.default_value),identity:e.identity===!0||e.identity===`t`,comment:m(e.comment),collation:h(e.collation)}))}async function A(e,t,n){return p(await e(`SELECT t.relname AS table_name, i.relname AS name, ix.indisprimary AS is_primary, ix.indisunique AS is_unique,
|
|
120
|
+
array_to_string(ARRAY(
|
|
121
|
+
SELECT COALESCE(a.attname, '<expr>')
|
|
122
|
+
FROM unnest(ix.indkey) WITH ORDINALITY AS k(attnum, ord)
|
|
123
|
+
LEFT JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = k.attnum
|
|
124
|
+
ORDER BY k.ord
|
|
125
|
+
), E'\\n') AS columns
|
|
126
|
+
FROM pg_index ix
|
|
127
|
+
JOIN pg_class t ON t.oid = ix.indrelid
|
|
128
|
+
JOIN pg_class i ON i.oid = ix.indexrelid
|
|
129
|
+
JOIN pg_namespace n ON n.oid = t.relnamespace
|
|
130
|
+
WHERE n.nspname = ${O(t)}${n?` AND t.relname = ${O(n)}`:``}
|
|
131
|
+
ORDER BY t.relname, ix.indisprimary DESC, i.relname`)).map(e=>({table:m(e.table_name),name:m(e.name),primary:e.is_primary===!0||e.is_primary===`t`,unique:e.is_unique===!0||e.is_unique===`t`,columns:m(e.columns).split(`
|
|
132
|
+
`).filter(Boolean)}))}function Ie(e){return{name:e.primary?`PRIMARY`:e.name,type:e.primary?`PRIMARY`:e.unique?`UNIQUE`:`INDEX`,columns:e.columns}}function Le(e,t){let n=new Set,r=new Set,i=new Set;for(let e of t)e.primary?e.columns.forEach(e=>n.add(e)):e.unique&&e.columns.length===1?r.add(e.columns[0]):e.columns.length>0&&i.add(e.columns[0]);return e.map(e=>({name:e.name,type:e.type,nullable:e.nullable,key:n.has(e.name)?`PRI`:r.has(e.name)?`UNI`:i.has(e.name)?`MUL`:``,defaultValue:e.defaultValue,extra:e.identity||/^nextval\(/i.test(e.defaultValue??``)?`auto_increment`:``,comment:e.comment,collation:e.collation}))}function j(e){let t=new Map;for(let n of e){let e=t.get(n.table);e?e.push(n):t.set(n.table,[n])}return t}async function M(e,t,n){return p(await e(`SELECT c.relname AS name, c.reltuples AS rows, obj_description(c.oid, 'pg_class') AS comment,
|
|
133
|
+
pg_total_relation_size(c.oid) AS data_length
|
|
134
|
+
FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
135
|
+
WHERE n.nspname = ${O(t)} AND c.relkind IN ('r', 'p')${n?` AND c.relname = ${O(n)}`:``}
|
|
136
|
+
ORDER BY c.relname`)).map(e=>{let t=g(e.rows);return{name:m(e.name),engine:null,rows:t!==null&&t>=0?Math.round(t):null,collation:null,autoIncrement:null,comment:m(e.comment),createTime:null,updateTime:null,dataLength:g(e.data_length)}})}async function Re(e,t,n){let r=await k(e,t,n);if(r.length===0)return null;let i=p(await e(`SELECT con.conname AS name, con.contype AS type, pg_get_constraintdef(con.oid, true) AS def
|
|
137
|
+
FROM pg_constraint con
|
|
138
|
+
JOIN pg_class c ON c.oid = con.conrelid
|
|
139
|
+
JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
140
|
+
WHERE n.nspname = ${O(t)} AND c.relname = ${O(n)} ORDER BY con.contype, con.conname`)),a=Me(t,n),o=r.map(e=>{let t=` ${D(e.name)} ${e.type}`;return e.identity?t+=` GENERATED BY DEFAULT AS IDENTITY`:e.defaultValue&&(t+=` DEFAULT ${e.defaultValue}`),e.nullable||(t+=` NOT NULL`),e.collation&&(t+=` COLLATE ${D(e.collation)}`),t});for(let e of i)m(e.type)!==`n`&&o.push(` CONSTRAINT ${D(m(e.name))} ${m(e.def)}`);let s=[`CREATE TABLE ${a} (\n${o.join(`,
|
|
141
|
+
`)}\n);`],c=new Set(i.map(e=>m(e.name))),l=p(await e(`SELECT indexname, indexdef FROM pg_indexes WHERE schemaname = ${O(t)} AND tablename = ${O(n)} ORDER BY indexname`));for(let e of l)c.has(m(e.indexname))||s.push(`${m(e.indexdef)};`);let u=m((await M(e,t,n))[0]?.comment);u&&s.push(`COMMENT ON TABLE ${a} IS ${O(u)};`);for(let e of r)e.comment&&s.push(`COMMENT ON COLUMN ${a}.${D(e.name)} IS ${O(e.comment)};`);return s.join(`
|
|
142
|
+
`)}async function ze(e,t,n,r){return h((await e(`SELECT pg_get_functiondef(p.oid) FROM pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace
|
|
143
|
+
WHERE n.nspname = ${O(t)} AND p.proname = ${O(n)} AND p.prokind = ${O(r)} ORDER BY p.oid LIMIT 1`)).records[0]?.[0])}async function Be(e,t){return(await e(`SELECT t.tgname, c.relname FROM pg_trigger t
|
|
144
|
+
JOIN pg_class c ON c.oid = t.tgrelid JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
145
|
+
WHERE n.nspname = ${O(t)} AND NOT t.tgisinternal ORDER BY c.relname, t.tgname`)).records.map(e=>({name:m(e[0]),table:m(e[1])}))}var Ve={TABLE:[`r`,`p`,`f`],VIEW:[`v`,`m`]},He={async listCatalogs(e){return(await e(`SELECT datname FROM pg_database WHERE NOT datistemplate ORDER BY datname`)).records.map(e=>m(e[0]))},async currentCatalog(e){return m((await e(`SELECT current_database()`)).records[0]?.[0])},async listDatabases(e){return(await e(`SELECT n.nspname FROM pg_namespace n WHERE ${Ne} ORDER BY (n.nspname <> 'public'), n.nspname`)).records.map(e=>m(e[0]))},listTables:(e,t)=>M(e,t),listViews:(e,t)=>Pe(e,t,Ve.VIEW),listProcedures:(e,t)=>Fe(e,t,`p`),listFunctions:(e,t)=>Fe(e,t,`f`),async listTriggers(e,t){return(await Be(e,t)).map(e=>e.name)},listTriggerDetails:Be,listEvents:async()=>[],async listColumns(e,t,n){let[r,i]=await Promise.all([k(e,t,n),A(e,t,n)]);return Le(r,i)},async listIndexes(e,t,n){return(await A(e,t,n)).map(Ie)},async listAllColumns(e,t){let[n,r]=await Promise.all([k(e,t),A(e,t)]),i=j(r),a=new Map;for(let[e,t]of j(n))a.set(e,Le(t,i.get(e)??[]));return a},async listAllIndexes(e,t){let n=new Map;for(let[r,i]of j(await A(e,t)))n.set(r,i.map(Ie));return n},async listForeignKeys(e,t){return(await e(`SELECT con.conname, c.relname, a.attname, rc.relname AS ref_table, ra.attname AS ref_column
|
|
146
|
+
FROM pg_constraint con
|
|
147
|
+
JOIN pg_class c ON c.oid = con.conrelid
|
|
148
|
+
JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
149
|
+
JOIN pg_class rc ON rc.oid = con.confrelid
|
|
150
|
+
JOIN unnest(con.conkey, con.confkey) WITH ORDINALITY AS k(attnum, ref_attnum, ord) ON true
|
|
151
|
+
JOIN pg_attribute a ON a.attrelid = con.conrelid AND a.attnum = k.attnum
|
|
152
|
+
JOIN pg_attribute ra ON ra.attrelid = con.confrelid AND ra.attnum = k.ref_attnum
|
|
153
|
+
WHERE con.contype = 'f' AND n.nspname = ${O(t)}
|
|
154
|
+
ORDER BY c.relname, con.conname, k.ord`)).records.map(e=>({name:m(e[0]),table:m(e[1]),column:m(e[2]),refTable:m(e[3]),refColumn:m(e[4])}))},async getTableInfo(e,t,n){return(await M(e,t,n))[0]??null},async getPrimaryKeys(e,t,n){return(await A(e,t,n)).find(e=>e.primary)?.columns??[]},async getCreateStatement(e,t,n,r){switch(n){case`TABLE`:return Re(e,t,r);case`VIEW`:{let n=(await e(`SELECT c.relkind, pg_get_viewdef(c.oid, true) FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
155
|
+
WHERE n.nspname = ${O(t)} AND c.relname = ${O(r)} AND c.relkind IN ('v', 'm')`)).records[0];return n?`CREATE ${m(n[0])===`m`?`MATERIALIZED VIEW`:`VIEW`} ${Me(t,r)} AS\n${m(n[1])}`:null}case`PROCEDURE`:return ze(e,t,r,`p`);case`FUNCTION`:return ze(e,t,r,`f`);case`TRIGGER`:return h((await e(`SELECT pg_get_triggerdef(t.oid, true) FROM pg_trigger t
|
|
156
|
+
JOIN pg_class c ON c.oid = t.tgrelid JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
157
|
+
WHERE n.nspname = ${O(t)} AND t.tgname = ${O(r)} AND NOT t.tgisinternal LIMIT 1`)).records[0]?.[0]);default:return null}}},Ue={async loadRoot({engine:e,run:t,database:n}){let r=e.introspect.listCatalogs?await e.introspect.listCatalogs(t):[],a=n||(e.introspect.currentCatalog?await e.introspect.currentCatalog(t):``);return a&&!r.includes(a)&&r.unshift(a),r.map(e=>{let t=e===a;return o(null,i.DATABASE,e,!t,{catalog:e,unreachable:!t})})},async loadChildren(e,t){switch(t.type){case i.DATABASE:return t.metadata?.unreachable?[]:(await e.engine.introspect.listDatabases(e.run)).map(e=>o(t.id,i.SCHEMA,e,!1,{database:e,catalog:t.text}));case i.SCHEMA:return te(e.engine,t.id,{database:t.text,catalog:t.metadata?.catalog});default:return await ae(e,t)??[]}},objectPath(e,t,n,r){let[i,a]=this.namespacePath(e,r);return[i,...oe(a,t,n)]},namespacePath(e,t){let n=a(null,i.DATABASE,t??``);return[n,a(n,i.SCHEMA,e)]}},We={SELECT_COUNT:`SELECT COUNT(1) AS cnt FROM "{0}"."{1}"`,SHOW_FULL_FIELDS:`SELECT column_name, data_type, is_nullable, column_default FROM information_schema.columns WHERE table_schema = '{0}' AND table_name = '{1}' ORDER BY ordinal_position`,SHOW_COLUMNS:`SELECT column_name, data_type, is_nullable, column_default FROM information_schema.columns WHERE table_schema = '{0}' AND table_name = '{1}' ORDER BY ordinal_position`,SHOW_DATABASE_VIEWS:`SELECT table_name FROM information_schema.views WHERE table_schema = '{0}' ORDER BY table_name`,SHOW_DATABASE_TABLES:`SELECT table_name FROM information_schema.tables WHERE table_schema = '{0}' AND table_type = 'BASE TABLE' ORDER BY table_name`,SHOW_DATABASE:`SELECT current_schema()`,SHOW_DATABASES:`SELECT nspname FROM pg_namespace WHERE nspname NOT LIKE 'pg\\_%' AND nspname <> 'information_schema' ORDER BY nspname`,ADD_INDEX:`CREATE {3} INDEX "{2}" ON "{0}"."{1}" ({4})`,SHOW_INDEXES:`SELECT indexname, indexdef FROM pg_indexes WHERE schemaname = '{0}' AND tablename = '{1}' ORDER BY indexname`,DROP_INDEX:`DROP INDEX "{0}"."{2}"`,DROP_PROCEDURE:`DROP PROCEDURE {2} "{0}"."{1}"`,DROP_FUNCTION:`DROP FUNCTION {2} "{0}"."{1}"`,DROP_TRIGGER:`DROP TRIGGER {2} "{1}" ON "{0}"."{3}"`,DROP_VIEW:`DROP VIEW {2} "{0}"."{1}"`,SHOW_PROCEDURES:`SELECT p.proname FROM pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace WHERE n.nspname = '{0}' AND p.prokind = 'p' ORDER BY 1`,SHOW_FUNCTIONS:`SELECT p.proname FROM pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace WHERE n.nspname = '{0}' AND p.prokind = 'f' ORDER BY 1`,SHOW_TRIGGERS:`SELECT t.tgname, c.relname FROM pg_trigger t JOIN pg_class c ON c.oid = t.tgrelid JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = '{0}' AND NOT t.tgisinternal ORDER BY 1`,SHOW_VIEWS:`SELECT table_name AS "View_name", view_definition AS "View_definition" FROM information_schema.views WHERE table_schema = '{0}' ORDER BY table_name`,SHOW_ALL_TABLE_STATUS:`SELECT c.relname AS "Name", c.reltuples::bigint AS "Rows", obj_description(c.oid, 'pg_class') AS "Comment" FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = '{0}' AND c.relkind IN ('r', 'p') ORDER BY 1`,SHOW_TABLE_STATUS:`SELECT c.relname AS "Name", c.reltuples::bigint AS "Rows", obj_description(c.oid, 'pg_class') AS "Comment" FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace WHERE n.nspname = '{0}' AND c.relname = '{1}'`,INSERT_TABLE:`INSERT INTO "{0}"."{1}" ({2}) VALUES({3});`,INSERT_TABLE_BULK:`INSERT INTO "{0}"."{1}" ({2}) VALUES {3};`,INSERT_DEFAULT_VALUES:`INSERT INTO "{0}"."{1}" DEFAULT VALUES;`,UPDATE_TABLE:`UPDATE "{0}"."{1}" SET {2} WHERE {3};`,UPDATE_TABLE_SINGLE:`UPDATE "{0}"."{1}" SET {2} WHERE {3}`,START_TRANSACTION:`BEGIN`,COMMIT:`COMMIT`,ROLLBACK:`ROLLBACK`,DELETE_TABLE:`DELETE FROM "{0}"."{1}" WHERE {2};`,SELECT_TABLE:`SELECT {2} FROM "{0}"."{1}" {3};`,TRUNCATE_TABLE:`TRUNCATE TABLE "{0}"."{1}"`,RENAME_TABLE:`ALTER TABLE "{0}"."{1}" RENAME TO "{3}"`,DROP_TABLE:`DROP TABLE {2} "{0}"."{1}"`,CREATE_PROCEDURE:`CREATE OR REPLACE PROCEDURE "{0}"."{1}"()
|
|
158
|
+
LANGUAGE plpgsql
|
|
159
|
+
AS $$
|
|
160
|
+
BEGIN
|
|
161
|
+
|
|
162
|
+
/* SQL Statements */
|
|
163
|
+
|
|
164
|
+
END;
|
|
165
|
+
$$;`,CREATE_FUNCTION:`CREATE OR REPLACE FUNCTION "{0}"."{1}"()
|
|
166
|
+
RETURNS integer
|
|
167
|
+
LANGUAGE plpgsql
|
|
168
|
+
AS $$
|
|
169
|
+
BEGIN
|
|
170
|
+
|
|
171
|
+
/* SQL Statements */
|
|
172
|
+
RETURN 0;
|
|
173
|
+
|
|
174
|
+
END;
|
|
175
|
+
$$;`,CREATE_TRIGGER:`CREATE TRIGGER "{1}"
|
|
176
|
+
BEFORE
|
|
177
|
+
-- AFTER
|
|
178
|
+
INSERT
|
|
179
|
+
-- UPDATE
|
|
180
|
+
-- DELETE
|
|
181
|
+
ON "{0}"."<Table Name>" FOR EACH ROW
|
|
182
|
+
EXECUTE FUNCTION "{0}"."<trigger_function>"();`,CREATE_VIEW:`CREATE VIEW "{0}"."{1}" AS
|
|
183
|
+
/* SQL SELECT Statement */`,CREATE_TABLE:`CREATE TABLE "{0}"."{1}" {2}`,ALTER_TABLE:`ALTER TABLE "{0}"."{1}" {2}`,ALTER_VIEW:`DROP VIEW IF EXISTS "{0}"."{1}";
|
|
184
|
+
{2};`,ALTER_PROCEDURE:`{2}`,ALTER_FUNCTION:`{2}`,ALTER_TRIGGER:`DROP TRIGGER IF EXISTS "{1}" ON "{0}"."{3}";
|
|
185
|
+
{2};`,SHOW_PROCESS_LIST:`SELECT pid AS "Id", usename AS "User", COALESCE(client_addr::text, 'local') AS "Host", datname AS "db", COALESCE(state, '') AS "Command", COALESCE(EXTRACT(EPOCH FROM (now() - query_start))::bigint, 0) AS "Time", COALESCE(wait_event_type || ': ' || wait_event, '') AS "State", query AS "Info" FROM pg_stat_activity WHERE backend_type = 'client backend' ORDER BY pid`,KILL_QUERY:`SELECT pg_terminate_backend({0})`,SHOW_VARIABLES:`SELECT name AS "Variable_name", setting AS "Value" FROM pg_settings ORDER BY name`,SHOW_GLOBAL_VARIABLES:`SELECT name AS "Variable_name", COALESCE(reset_val, setting) AS "Value" FROM pg_settings ORDER BY name`,SHOW_SESSION_VARIABLES:`SELECT name AS "Variable_name", setting AS "Value" FROM pg_settings ORDER BY name`,CREATE_SCHEMA:`CREATE SCHEMA "{0}"`,DROP_SCHEMA:`DROP SCHEMA "{0}" CASCADE`,COPY_TABLE_STRUCTURE:`CREATE TABLE "{2}"."{3}" (LIKE "{0}"."{1}" INCLUDING ALL)`,COPY_TABLE_DATA:`INSERT INTO "{2}"."{3}" SELECT * FROM "{0}"."{1}"`,DISABLE_FK_CHECKS:`SET session_replication_role = 'replica'`,ENABLE_FK_CHECKS:`SET session_replication_role = 'origin'`},Ge=`ASCII.BTRIM.CHAR_LENGTH.CHR.CONCAT.CONCAT_WS.FORMAT.INITCAP.LEFT.LENGTH.LOWER.LPAD.LTRIM.MD5.POSITION.QUOTE_IDENT.QUOTE_LITERAL.REGEXP_MATCHES.REGEXP_REPLACE.REGEXP_SPLIT_TO_ARRAY.REPEAT.REPLACE.REVERSE.RIGHT.RPAD.RTRIM.SPLIT_PART.STRING_AGG.STRING_TO_ARRAY.STRPOS.SUBSTR.SUBSTRING.TRANSLATE.TRIM.UPPER.ABS.CBRT.CEIL.CEILING.DIV.EXP.FLOOR.GCD.LCM.LN.LOG.LOG10.MOD.PI.POWER.RADIANS.RANDOM.ROUND.SIGN.SQRT.TRUNC.WIDTH_BUCKET.AGE.CLOCK_TIMESTAMP.CURRENT_DATE.CURRENT_TIME.CURRENT_TIMESTAMP.DATE_PART.DATE_TRUNC.EXTRACT.ISFINITE.JUSTIFY_DAYS.JUSTIFY_HOURS.LOCALTIME.LOCALTIMESTAMP.MAKE_DATE.MAKE_INTERVAL.MAKE_TIMESTAMP.NOW.STATEMENT_TIMESTAMP.TO_CHAR.TO_DATE.TO_TIMESTAMP.ARRAY_AGG.AVG.BOOL_AND.BOOL_OR.COUNT.EVERY.JSON_AGG.JSONB_AGG.JSON_OBJECT_AGG.MAX.MIN.PERCENTILE_CONT.PERCENTILE_DISC.STDDEV.SUM.VARIANCE.ROW_NUMBER.RANK.DENSE_RANK.PERCENT_RANK.CUME_DIST.NTILE.LAG.LEAD.FIRST_VALUE.LAST_VALUE.NTH_VALUE.COALESCE.NULLIF.GREATEST.LEAST.CAST.GEN_RANDOM_UUID.CURRENT_USER.CURRENT_DATABASE.CURRENT_SCHEMA.PG_TYPEOF.VERSION.ARRAY_LENGTH.ARRAY_TO_STRING.ARRAY_APPEND.ARRAY_REMOVE.ARRAY_POSITION.CARDINALITY.UNNEST.JSON_BUILD_OBJECT.JSONB_BUILD_OBJECT.JSON_BUILD_ARRAY.JSONB_BUILD_ARRAY.JSON_EXTRACT_PATH.JSONB_EXTRACT_PATH.JSON_EXTRACT_PATH_TEXT.JSONB_EXTRACT_PATH_TEXT.JSONB_SET.JSONB_PRETTY.JSON_TYPEOF.JSONB_TYPEOF.JSON_ARRAY_LENGTH.JSONB_ARRAY_LENGTH.JSON_EACH.JSONB_EACH.TO_JSON.TO_JSONB.ROW_TO_JSON`.split(`.`),Ke=`ALL.ANALYSE.ANALYZE.AND.ANY.ARRAY.AS.ASC.ASYMMETRIC.BOTH.CASE.CAST.CHECK.COLLATE.COLUMN.CONSTRAINT.CREATE.CURRENT_CATALOG.CURRENT_DATE.CURRENT_ROLE.CURRENT_TIME.CURRENT_TIMESTAMP.CURRENT_USER.DEFAULT.DEFERRABLE.DESC.DISTINCT.DO.ELSE.END.EXCEPT.FALSE.FETCH.FOR.FOREIGN.FROM.GRANT.GROUP.GROUP BY.HAVING.IN.INITIALLY.INTERSECT.INTO.LATERAL.LEADING.LIMIT.LOCALTIME.LOCALTIMESTAMP.NOT.NULL.OFFSET.ON.ONLY.OR.ORDER.ORDER BY.PLACING.PRIMARY.REFERENCES.RETURNING.SELECT.SESSION_USER.SOME.SYMMETRIC.TABLE.THEN.TO.TRAILING.TRUE.UNION.UNIQUE.USER.USING.VARIADIC.WHEN.WHERE.WINDOW.WITH.ALTER.BEGIN.BETWEEN.BY.CASCADE.COMMENT.COMMIT.CROSS.DATABASE.DELETE.DROP.EXISTS.EXPLAIN.FULL.FUNCTION.IF.ILIKE.INDEX.INNER.INSERT.INSERT INTO.IS.JOIN.KEY.LEFT.LIKE.MATERIALIZED.NATURAL.OUTER.OVER.PARTITION.PROCEDURE.RECURSIVE.RETURNS.RIGHT.ROLLBACK.SCHEMA.SEQUENCE.SET.SHOW.TRIGGER.TRUNCATE.TYPE.UPDATE.VACUUM.VALUES.VIEW`.split(`.`),qe=`bigint.bigserial.bit.boolean.box.bytea.char.character.character varying.cidr.circle.date.decimal.double precision.inet.int.integer.interval.json.jsonb.line.macaddr.money.numeric.path.point.polygon.real.serial.smallint.smallserial.text.time.timestamp.timestamptz.timetz.tsquery.tsvector.uuid.varchar.xml`.split(`.`),Je={hashComments:!1,dashCommentNeedsSpace:!1,backslashEscapes:!1,doubleQuoteIsIdentifier:!0,bracketIdentifiers:!1,delimiterCommand:!1,dollarQuotes:!0,goBatchSeparator:!1,limitStyle:`limit`,plsqlBlocks:!1};function Ye(e){let{quoteIdentifier:t,quoteLiteral:n,qualify:i}=e;return{...r(e,{addColumn:`ADD COLUMN`,modify:`postgres`,qualifiedIndexNames:!1,dropIndexOnTable:!1,unqualifiedIndexTarget:!1,multiRowInsert:!0,mysqlAttributes:!1,fulltext:!1,upperCaseTypes:!1}),createTable(e){if(!e.name&&e.columns.length===0)return`-- Define a table name and columns to generate SQL.`;let r=_(e.name,`untitled`),a=i(e.database,r),o=e.columns.filter(e=>e.primaryKey),s=e.columns.map(e=>{let n=` ${t(_(e.name,`column`))} ${e.type}`;return e.length&&(n+=`(${e.length})`),e.autoIncrement&&(n+=` GENERATED BY DEFAULT AS IDENTITY`),e.notNull&&(n+=` NOT NULL`),e.defaultValue&&(n+=` DEFAULT ${e.defaultValue}`),n});o.length>0&&s.push(` PRIMARY KEY (${o.map(e=>t(e.name)).join(`, `)})`);let c=[`CREATE TABLE ${a} (\n${s.join(`,
|
|
186
|
+
`)}\n);`];for(let n of e.indexes){if(n.type===`PRIMARY`||n.columns.length===0)continue;let e=n.type===`UNIQUE`?`UNIQUE `:``,i=n.type===`FULLTEXT`?` -- FULLTEXT is MySQL-only; consider a GIN index on to_tsvector()`:``,o=t(_(n.name,`${r}_${n.columns.join(`_`)}_idx`));c.push(`CREATE ${e}INDEX ${o} ON ${a} (${n.columns.map(t).join(`, `)});${i}`)}e.options.comment&&c.push(`COMMENT ON TABLE ${a} IS ${n(e.options.comment)};`);for(let r of e.columns)r.comment&&c.push(`COMMENT ON COLUMN ${a}.${t(_(r.name,`column`))} IS ${n(r.comment)};`);return c.join(`
|
|
187
|
+
`)}}}var N={id:`postgres`,label:`PostgreSQL`,capabilities:{multipleDatabases:!1,users:!1,procedures:!0,functions:!0,triggers:!0,events:!1,processList:!0,variables:!0,status:!1,flush:!1,tableProperties:!1,implicitCommitDdl:!1,transactions:!0},ddl:Ye,introspect:He,tree:Ue,defaultPort:5432,binaryLiteral:e=>`'\\x${e}'::bytea`,booleanKeywords:!0,identifierQuote:`"`,queries:We,syntax:Je,dataTypes:qe,functions:Ge,reservedWords:Ke},Xe=v(N),P=e=>`"${e.replaceAll(`"`,`""`)}"`,F=e=>`'${e.replace(/'/g,`''`)}'`,I=e=>`${P(e)}.sqlite_master`;async function L(e,t,n){return(await e(`SELECT name FROM ${I(t)} WHERE type = ${F(n)} AND name NOT LIKE 'sqlite_%' ORDER BY name`)).records.map(e=>m(e[0]))}async function R(e,t,n){return p(await e(`PRAGMA ${P(t)}.table_info(${P(n)})`)).map(e=>({cid:Number(e.cid),name:m(e.name),type:m(e.type),notnull:Number(e.notnull)===1,dflt_value:h(e.dflt_value),pk:Number(e.pk)}))}async function Ze(e,t,n){return m((await e(`SELECT sql FROM ${I(t)} WHERE type = 'table' AND name = ${F(n)}`)).records[0]?.[0])}function z(e){return e.filter(e=>e.pk>0).sort((e,t)=>e.pk-t.pk).map(e=>e.name)}async function B(e,t,n,r){let i=[],a=z(r);a.length>0&&i.push({name:`PRIMARY`,type:`PRIMARY`,columns:a});let o=p(await e(`PRAGMA ${P(t)}.index_list(${P(n)})`));for(let n of o){if(m(n.origin)===`pk`)continue;let r=m(n.name),a=p(await e(`PRAGMA ${P(t)}.index_info(${P(r)})`));i.push({name:r,type:Number(n.unique)===1?`UNIQUE`:`INDEX`,columns:a.sort((e,t)=>Number(e.seqno)-Number(t.seqno)).map(e=>m(e.name,`<expr>`))})}return i}async function Qe(e,t,n){let r=await R(e,t,n),i=await B(e,t,n,r),a=await Ze(e,t,n),o=z(r),s=/AUTOINCREMENT/i.test(a),c=new Set,l=new Set;for(let e of i)e.type!==`PRIMARY`&&(e.type===`UNIQUE`&&e.columns.length===1?c.add(e.columns[0]):l.add(e.columns[0]));return r.map(e=>{let t=o.length===1&&o[0]===e.name&&/^INTEGER$/i.test(e.type);return{name:e.name,type:e.type,nullable:!e.notnull&&e.pk===0,key:e.pk>0?`PRI`:c.has(e.name)?`UNI`:l.has(e.name)?`MUL`:``,defaultValue:e.dflt_value,extra:t&&s?`auto_increment`:``,comment:``,collation:null}})}var $e={TABLE:`table`,VIEW:`view`,TRIGGER:`trigger`},et={async listDatabases(e){return p(await e(`PRAGMA database_list`)).map(e=>m(e.name)).filter(e=>e!==`temp`)},async listTables(e,t){return(await L(e,t,`table`)).map(e=>({name:e,engine:null,rows:null,collation:null,autoIncrement:null,comment:``,createTime:null,updateTime:null,dataLength:null}))},listViews:(e,t)=>L(e,t,`view`),listProcedures:async()=>[],listFunctions:async()=>[],listTriggers:(e,t)=>L(e,t,`trigger`),listEvents:async()=>[],listColumns:Qe,async listIndexes(e,t,n){return B(e,t,n,await R(e,t,n))},async listAllColumns(e,t){let n=new Map;for(let r of await L(e,t,`table`))n.set(r,await Qe(e,t,r));return n},async listAllIndexes(e,t){let n=new Map;for(let r of await L(e,t,`table`))n.set(r,await B(e,t,r,await R(e,t,r)));return n},async listForeignKeys(e,t){let n=[];for(let r of await L(e,t,`table`)){let i=p(await e(`PRAGMA ${P(t)}.foreign_key_list(${P(r)})`));for(let e of i)n.push({name:`fk_${r}_${e.id}`,table:r,column:m(e.from),refTable:m(e.table),refColumn:m(e.to)})}return n},async getTableInfo(e,t,n){return(await e(`SELECT 1 FROM ${I(t)} WHERE type = 'table' AND name = ${F(n)}`)).records.length===0?null:{name:n,engine:null,rows:g((await e(`SELECT COUNT(*) FROM ${P(t)}.${P(n)}`)).records[0]?.[0]),collation:null,autoIncrement:null,comment:``,createTime:null,updateTime:null,dataLength:null}},async getPrimaryKeys(e,t,n){return z(await R(e,t,n))},async getCreateStatement(e,t,n,r){let i=$e[n];return i?h((await e(`SELECT sql FROM ${I(t)} WHERE type = ${F(i)} AND name = ${F(r)}`)).records[0]?.[0]):null}},tt={SELECT_COUNT:`SELECT COUNT(1) as cnt FROM "{0}"."{1}"`,SHOW_FULL_FIELDS:`PRAGMA "{0}".table_info("{1}")`,SHOW_COLUMNS:`PRAGMA "{0}".table_info("{1}")`,SHOW_DATABASE_VIEWS:`SELECT name FROM "{0}".sqlite_master WHERE type = 'view' ORDER BY name`,SHOW_DATABASE_TABLES:`SELECT name FROM "{0}".sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%' ORDER BY name`,SHOW_DATABASE:`PRAGMA database_list`,SHOW_DATABASES:`PRAGMA database_list`,ADD_INDEX:`CREATE {3} INDEX "{0}"."{2}" ON "{1}"({4})`,SHOW_INDEX:`PRAGMA "{0}".index_info("{2}")`,SHOW_INDEXES:`PRAGMA "{0}".index_list("{1}")`,DROP_INDEX:`DROP INDEX "{0}"."{2}"`,DROP_TRIGGER:`DROP TRIGGER {2} "{0}"."{1}"`,DROP_VIEW:`DROP VIEW {2} "{0}"."{1}"`,SHOW_TRIGGERS:`SELECT name, tbl_name, sql FROM "{0}".sqlite_master WHERE type = 'trigger' ORDER BY name`,SHOW_VIEWS:`SELECT name AS View_name, sql AS View_definition FROM "{0}".sqlite_master WHERE type = 'view' ORDER BY name`,SHOW_ALL_TABLE_STATUS:`SELECT name, type FROM "{0}".sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%' ORDER BY name`,SHOW_TABLE_STATUS:`SELECT name, type FROM "{0}".sqlite_master WHERE type = 'table' AND name = '{1}'`,INSERT_TABLE:`INSERT INTO "{0}"."{1}" ({2}) VALUES({3});`,INSERT_TABLE_BULK:`INSERT INTO "{0}"."{1}" ({2}) VALUES {3};`,INSERT_DEFAULT_VALUES:`INSERT INTO "{0}"."{1}" DEFAULT VALUES;`,INSERT_ON_DUPLICATE:`INSERT INTO "{0}"."{1}" ({2}) VALUES({3}) ON CONFLICT DO UPDATE SET {4}`,UPDATE_TABLE:`UPDATE "{0}"."{1}" SET {2} WHERE {3};`,UPDATE_TABLE_SINGLE:`UPDATE "{0}"."{1}" SET {2} WHERE {3}`,START_TRANSACTION:`BEGIN`,COMMIT:`COMMIT`,ROLLBACK:`ROLLBACK`,DELETE_TABLE:`DELETE FROM "{0}"."{1}" WHERE {2};`,SELECT_TABLE:`SELECT {2} FROM "{0}"."{1}" {3};`,TRUNCATE_TABLE:`DELETE FROM "{0}"."{1}"`,RENAME_TABLE:`ALTER TABLE "{0}"."{1}" RENAME TO "{3}"`,DROP_TABLE:`DROP TABLE {2} "{0}"."{1}"`,TABLE_CREATE_INFO:`SELECT sql FROM "{0}".sqlite_master WHERE type = 'table' AND name = '{1}'`,TABLE_KEYS_INFO:`PRAGMA "{0}".index_list("{1}")`,INDEX_KEYS_INFO:`PRAGMA "{0}".index_info("{2}")`,CREATE_TRIGGER:`CREATE TRIGGER "{0}"."{1}"
|
|
188
|
+
BEFORE
|
|
189
|
+
-- AFTER
|
|
190
|
+
INSERT
|
|
191
|
+
-- UPDATE
|
|
192
|
+
-- DELETE
|
|
193
|
+
ON "<Table Name>" FOR EACH ROW
|
|
194
|
+
BEGIN
|
|
195
|
+
|
|
196
|
+
/* SQL Statements */
|
|
197
|
+
|
|
198
|
+
END;`,CREATE_VIEW:`CREATE VIEW "{0}"."{1}" AS
|
|
199
|
+
/* SQL SELECT Statement */`,SHOW_CREATE_TABLE:`SELECT sql FROM "{0}".sqlite_master WHERE type = 'table' AND name = '{1}'`,SHOW_CREATE_VIEW:`SELECT sql FROM "{0}".sqlite_master WHERE type = 'view' AND name = '{1}'`,SHOW_CREATE_TRIGGER:`SELECT sql FROM "{0}".sqlite_master WHERE type = 'trigger' AND name = '{1}'`,CREATE_TABLE:`CREATE TABLE "{0}"."{1}" {2}`,ALTER_TABLE:`ALTER TABLE "{0}"."{1}" {2}`,ALTER_VIEW:`DROP VIEW IF EXISTS "{0}"."{1}";
|
|
200
|
+
{2};`,ALTER_TRIGGER:`DROP TRIGGER IF EXISTS "{0}"."{1}";
|
|
201
|
+
{2};`,COPY_TABLE_STRUCTURE:`CREATE TABLE "{2}"."{3}" AS SELECT * FROM "{0}"."{1}" WHERE 0`,COPY_TABLE_DATA:`INSERT INTO "{2}"."{3}" SELECT * FROM "{0}"."{1}"`,DISABLE_FK_CHECKS:`PRAGMA foreign_keys = OFF`,ENABLE_FK_CHECKS:`PRAGMA foreign_keys = ON`},nt=`ABS.CHANGES.CHAR.COALESCE.CONCAT.CONCAT_WS.FORMAT.GLOB.HEX.IFNULL.IIF.INSTR.LAST_INSERT_ROWID.LENGTH.LIKE.LIKELIHOOD.LIKELY.LOWER.LTRIM.MAX.MIN.NULLIF.OCTET_LENGTH.PRINTF.QUOTE.RANDOM.RANDOMBLOB.REPLACE.ROUND.RTRIM.SIGN.SOUNDEX.SQLITE_COMPILEOPTION_GET.SQLITE_COMPILEOPTION_USED.SQLITE_OFFSET.SQLITE_SOURCE_ID.SQLITE_VERSION.SUBSTR.SUBSTRING.TOTAL_CHANGES.TRIM.TYPEOF.UNHEX.UNICODE.UNLIKELY.UPPER.ZEROBLOB.DATE.TIME.DATETIME.JULIANDAY.UNIXEPOCH.STRFTIME.TIMEDIFF.AVG.COUNT.GROUP_CONCAT.STRING_AGG.SUM.TOTAL.ROW_NUMBER.RANK.DENSE_RANK.PERCENT_RANK.CUME_DIST.NTILE.LAG.LEAD.FIRST_VALUE.LAST_VALUE.NTH_VALUE.ACOS.ACOSH.ASIN.ASINH.ATAN.ATAN2.ATANH.CEIL.CEILING.COS.COSH.DEGREES.EXP.FLOOR.LN.LOG.LOG10.LOG2.MOD.PI.POW.POWER.RADIANS.SIN.SINH.SQRT.TAN.TANH.TRUNC.JSON.JSONB.JSON_ARRAY.JSON_ARRAY_LENGTH.JSON_EACH.JSON_ERROR_POSITION.JSON_EXTRACT.JSON_INSERT.JSON_OBJECT.JSON_PATCH.JSON_PRETTY.JSON_QUOTE.JSON_REMOVE.JSON_REPLACE.JSON_SET.JSON_TREE.JSON_TYPE.JSON_VALID.JSON_GROUP_ARRAY.JSON_GROUP_OBJECT`.split(`.`),rt=`ABORT.ACTION.ADD.AFTER.ALL.ALTER.ALWAYS.ANALYZE.AND.AS.ASC.ATTACH.AUTOINCREMENT.BEFORE.BEGIN.BETWEEN.BY.CASCADE.CASE.CAST.CHECK.COLLATE.COLUMN.COMMIT.CONFLICT.CONSTRAINT.CREATE.CROSS.CURRENT.CURRENT_DATE.CURRENT_TIME.CURRENT_TIMESTAMP.DATABASE.DEFAULT.DEFERRABLE.DEFERRED.DELETE.DESC.DETACH.DISTINCT.DO.DROP.EACH.ELSE.END.ESCAPE.EXCEPT.EXCLUDE.EXCLUSIVE.EXISTS.EXPLAIN.FAIL.FILTER.FIRST.FOLLOWING.FOR.FOREIGN.FROM.FULL.GENERATED.GLOB.GROUP BY.GROUP.GROUPS.HAVING.IF.IGNORE.IMMEDIATE.IN.INDEX.INDEXED.INITIALLY.INNER.INSERT INTO.INSERT.INSTEAD.INTERSECT.INTO.IS.ISNULL.JOIN.KEY.LAST.LEFT.LIKE.LIMIT.MATCH.MATERIALIZED.NATURAL.NO.NOT.NOTHING.NOTNULL.NULL.NULLS.OF.OFFSET.ON CONFLICT.ON.OR.ORDER BY.ORDER.OTHERS.OUTER.OVER.PARTITION.PLAN.PRAGMA.PRECEDING.PRIMARY.QUERY.RAISE.RANGE.RECURSIVE.REFERENCES.REGEXP.REINDEX.RELEASE.RENAME.REPLACE.RESTRICT.RETURNING.RIGHT.ROLLBACK.ROW.ROWS.SAVEPOINT.SELECT.SET.TABLE.TEMP.TEMPORARY.THEN.TIES.TO.TRANSACTION.TRIGGER.TRUE.FALSE.UNBOUNDED.UNION.UNIQUE.UPDATE.USING.VACUUM.VALUES.VIEW.VIRTUAL.WHEN.WHERE.WINDOW.WITH.WITHOUT`.split(`.`),it=[`integer`,`int`,`real`,`text`,`blob`,`numeric`,`boolean`,`varchar`,`char`,`double`,`float`,`bigint`,`smallint`,`tinyint`,`date`,`datetime`,`timestamp`,`decimal`,`json`],at={hashComments:!1,dashCommentNeedsSpace:!1,backslashEscapes:!1,doubleQuoteIsIdentifier:!0,bracketIdentifiers:!0,delimiterCommand:!1,dollarQuotes:!1,goBatchSeparator:!1,limitStyle:`limit`,plsqlBlocks:!1};function ot(e){let{quoteIdentifier:t,qualify:n}=e;return{...r(e,{addColumn:`ADD COLUMN`,modify:`none`,qualifiedIndexNames:!0,dropIndexOnTable:!1,unqualifiedIndexTarget:!0,multiRowInsert:!0,mysqlAttributes:!1,fulltext:!1,upperCaseTypes:!1}),createTable(e){if(!e.name&&e.columns.length===0)return`-- Define a table name and columns to generate SQL.`;let r=e.columns.filter(e=>e.primaryKey),i=r.length===1&&r[0].type.toUpperCase()===`INTEGER`,a=e.columns.map(e=>{let n=` ${t(_(e.name,`column`))} ${e.type.toUpperCase()}`;return e.length&&!st(e,i)&&(n+=`(${e.length})`),st(e,i)&&(n+=` PRIMARY KEY`,e.autoIncrement&&(n+=` AUTOINCREMENT`)),e.notNull&&(n+=` NOT NULL`),e.defaultValue&&(n+=` DEFAULT ${e.defaultValue}`),e.comment&&(n+=` /* ${e.comment.replaceAll(`*/`,`* /`)} */`),n});!i&&r.length>0&&a.push(` PRIMARY KEY (${r.map(e=>t(e.name)).join(`, `)})`);let o=_(e.name,`untitled`),s=[`CREATE TABLE ${n(e.database,o)} (\n${a.join(`,
|
|
202
|
+
`)}\n);`];for(let r of e.indexes){if(r.type===`PRIMARY`||r.columns.length===0)continue;let i=r.type===`UNIQUE`?`UNIQUE `:``,a=r.type===`FULLTEXT`?` -- FULLTEXT is not supported by SQLite; created as a plain index`:``,c=n(e.database,_(r.name,`${o}_${r.columns.join(`_`)}_idx`));s.push(`CREATE ${i}INDEX ${c} ON ${t(o)} (${r.columns.map(t).join(`, `)});${a}`)}return s.join(`
|
|
203
|
+
`)}}}function st(e,t){return t&&e.primaryKey}var V={id:`sqlite`,label:`SQLite`,capabilities:{multipleDatabases:!1,users:!1,procedures:!1,functions:!1,triggers:!0,events:!1,processList:!1,variables:!1,status:!1,flush:!1,tableProperties:!1,implicitCommitDdl:!1,transactions:!0},ddl:ot,rowIdExpression:`rowid AS "_rowid_"`,introspect:et,identifierQuote:`"`,queries:tt,syntax:at,dataTypes:it,functions:nt,reservedWords:rt},ct=v(V),H=e=>`[${e.replaceAll(`]`,`]]`)}]`,lt=(e,t)=>`${H(e)}.${H(t)}`,U=e=>`'${e.replace(/'/g,`''`)}'`,ut=(e,t)=>`OBJECT_ID(${U(`${H(e)}.${H(t)}`)})`,dt=`s.name NOT IN ('sys', 'INFORMATION_SCHEMA', 'guest') AND s.schema_id < 16384`;async function W(e,t){return(await e(t)).records.map(e=>m(e[0]))}function ft(e,t,n,r){let i=e.toLowerCase();return[`varchar`,`char`,`varbinary`,`binary`].includes(i)?`${i}(${t===-1?`max`:t})`:[`nvarchar`,`nchar`].includes(i)?`${i}(${t===-1?`max`:t/2})`:[`decimal`,`numeric`].includes(i)?`${i}(${n},${r})`:[`datetime2`,`time`,`datetimeoffset`].includes(i)?`${i}(${r})`:i}async function G(e,t,n){return p(await e(`SELECT o.name AS table_name, c.name, ty.name AS type_name, c.max_length, c.precision, c.scale,
|
|
204
|
+
c.is_nullable, d.definition AS default_value, c.is_identity, c.is_computed, c.collation_name,
|
|
205
|
+
CAST(ep.value AS NVARCHAR(4000)) AS comment
|
|
206
|
+
FROM sys.columns c
|
|
207
|
+
JOIN sys.objects o ON o.object_id = c.object_id
|
|
208
|
+
JOIN sys.schemas s ON s.schema_id = o.schema_id
|
|
209
|
+
JOIN sys.types ty ON ty.user_type_id = c.user_type_id
|
|
210
|
+
LEFT JOIN sys.default_constraints d ON d.object_id = c.default_object_id
|
|
211
|
+
LEFT JOIN sys.extended_properties ep ON ep.major_id = c.object_id AND ep.minor_id = c.column_id AND ep.class = 1 AND ep.name = 'MS_Description'
|
|
212
|
+
WHERE s.name = ${U(t)} AND o.type IN ('U', 'V')${n?` AND o.name = ${U(n)}`:``}
|
|
213
|
+
ORDER BY o.name, c.column_id`)).map(e=>({table:m(e.table_name),name:m(e.name),type:ft(m(e.type_name),Number(e.max_length),Number(e.precision),Number(e.scale)),nullable:e.is_nullable===!0||Number(e.is_nullable)===1,defaultValue:h(e.default_value),identity:e.is_identity===!0||Number(e.is_identity)===1,computed:e.is_computed===!0||Number(e.is_computed)===1,comment:m(e.comment),collation:h(e.collation_name)}))}async function K(e,t,n){return p(await e(`SELECT o.name AS table_name, i.name, i.is_primary_key, i.is_unique,
|
|
214
|
+
STRING_AGG(c.name, CHAR(10)) WITHIN GROUP (ORDER BY ic.key_ordinal) AS columns
|
|
215
|
+
FROM sys.indexes i
|
|
216
|
+
JOIN sys.objects o ON o.object_id = i.object_id
|
|
217
|
+
JOIN sys.schemas s ON s.schema_id = o.schema_id
|
|
218
|
+
JOIN sys.index_columns ic ON ic.object_id = i.object_id AND ic.index_id = i.index_id AND ic.is_included_column = 0
|
|
219
|
+
JOIN sys.columns c ON c.object_id = ic.object_id AND c.column_id = ic.column_id
|
|
220
|
+
WHERE s.name = ${U(t)} AND o.type = 'U' AND i.name IS NOT NULL${n?` AND o.name = ${U(n)}`:``}
|
|
221
|
+
GROUP BY o.name, i.name, i.is_primary_key, i.is_unique, i.index_id
|
|
222
|
+
ORDER BY o.name, i.is_primary_key DESC, i.name`)).map(e=>({table:m(e.table_name),name:m(e.name),primary:e.is_primary_key===!0||Number(e.is_primary_key)===1,unique:e.is_unique===!0||Number(e.is_unique)===1,columns:m(e.columns).split(`
|
|
223
|
+
`).filter(Boolean)}))}function pt(e){return{name:e.primary?`PRIMARY`:e.name,type:e.primary?`PRIMARY`:e.unique?`UNIQUE`:`INDEX`,columns:e.columns}}function mt(e,t){let n=new Set,r=new Set,i=new Set;for(let e of t)e.primary?e.columns.forEach(e=>n.add(e)):e.unique&&e.columns.length===1?r.add(e.columns[0]):e.columns.length>0&&i.add(e.columns[0]);return e.map(e=>({name:e.name,type:e.type,nullable:e.nullable,key:n.has(e.name)?`PRI`:r.has(e.name)?`UNI`:i.has(e.name)?`MUL`:``,defaultValue:e.defaultValue,extra:e.identity?`identity`:e.computed?`computed`:``,comment:e.comment,collation:e.collation}))}function q(e){let t=new Map;for(let n of e){let e=t.get(n.table);e?e.push(n):t.set(n.table,[n])}return t}async function J(e,t,n){return p(await e(`SELECT t.name, t.create_date, t.modify_date,
|
|
224
|
+
CAST(ep.value AS NVARCHAR(4000)) AS comment,
|
|
225
|
+
(SELECT SUM(p.rows) FROM sys.partitions p WHERE p.object_id = t.object_id AND p.index_id IN (0, 1)) AS rows,
|
|
226
|
+
(SELECT SUM(a.total_pages) * 8192 FROM sys.partitions p JOIN sys.allocation_units a ON a.container_id = p.partition_id WHERE p.object_id = t.object_id) AS data_length
|
|
227
|
+
FROM sys.tables t
|
|
228
|
+
JOIN sys.schemas s ON s.schema_id = t.schema_id
|
|
229
|
+
LEFT JOIN sys.extended_properties ep ON ep.major_id = t.object_id AND ep.minor_id = 0 AND ep.class = 1 AND ep.name = 'MS_Description'
|
|
230
|
+
WHERE s.name = ${U(t)}${n?` AND t.name = ${U(n)}`:``}
|
|
231
|
+
ORDER BY t.name`)).map(e=>({name:m(e.name),engine:null,rows:g(e.rows),collation:null,autoIncrement:null,comment:m(e.comment),createTime:h(e.create_date),updateTime:h(e.modify_date),dataLength:g(e.data_length)}))}async function ht(e,t,n){let r=await G(e,t,n);if(r.length===0)return null;let[i,a]=await Promise.all([K(e,t,n),p(await e(`SELECT fk.name, c.name AS column_name, rs.name AS ref_schema, rt.name AS ref_table, rc.name AS ref_column,
|
|
232
|
+
fk.delete_referential_action_desc AS on_delete, fk.update_referential_action_desc AS on_update
|
|
233
|
+
FROM sys.foreign_keys fk
|
|
234
|
+
JOIN sys.foreign_key_columns fkc ON fkc.constraint_object_id = fk.object_id
|
|
235
|
+
JOIN sys.columns c ON c.object_id = fkc.parent_object_id AND c.column_id = fkc.parent_column_id
|
|
236
|
+
JOIN sys.objects rt ON rt.object_id = fk.referenced_object_id
|
|
237
|
+
JOIN sys.schemas rs ON rs.schema_id = rt.schema_id
|
|
238
|
+
JOIN sys.columns rc ON rc.object_id = fkc.referenced_object_id AND rc.column_id = fkc.referenced_column_id
|
|
239
|
+
WHERE fk.parent_object_id = ${ut(t,n)}
|
|
240
|
+
ORDER BY fk.name, fkc.constraint_column_id`))]),o=lt(t,n),s=r.map(e=>{let t=` ${H(e.name)} ${e.type}`;return e.identity&&(t+=` IDENTITY(1,1)`),e.collation&&(t+=` COLLATE ${e.collation}`),t+=e.nullable?` NULL`:` NOT NULL`,e.defaultValue&&!e.identity&&(t+=` DEFAULT ${e.defaultValue}`),t});for(let e of i)e.primary?s.push(` CONSTRAINT ${H(e.name)} PRIMARY KEY (${e.columns.map(H).join(`, `)})`):e.unique&&s.push(` CONSTRAINT ${H(e.name)} UNIQUE (${e.columns.map(H).join(`, `)})`);let c=new Map;for(let e of a){let t=m(e.name),n=c.get(t)??{cols:[],refSchema:m(e.ref_schema),refTable:m(e.ref_table),refCols:[],onDelete:m(e.on_delete),onUpdate:m(e.on_update)};n.cols.push(m(e.column_name)),n.refCols.push(m(e.ref_column)),c.set(t,n)}for(let[e,t]of c){let n=` CONSTRAINT ${H(e)} FOREIGN KEY (${t.cols.map(H).join(`, `)}) REFERENCES ${lt(t.refSchema,t.refTable)} (${t.refCols.map(H).join(`, `)})`;t.onDelete&&t.onDelete!==`NO_ACTION`&&(n+=` ON DELETE ${t.onDelete.replaceAll(`_`,` `)}`),t.onUpdate&&t.onUpdate!==`NO_ACTION`&&(n+=` ON UPDATE ${t.onUpdate.replaceAll(`_`,` `)}`),s.push(n)}let l=[`CREATE TABLE ${o} (\n${s.join(`,
|
|
241
|
+
`)}\n);`];for(let e of i)e.primary||e.unique||l.push(`CREATE INDEX ${H(e.name)} ON ${o} (${e.columns.map(H).join(`, `)});`);let u=(await J(e,t,n))[0];u?.comment&&l.push(`EXEC sp_addextendedproperty 'MS_Description', ${U(u.comment)}, 'SCHEMA', ${U(t)}, 'TABLE', ${U(n)};`);for(let e of r)e.comment&&l.push(`EXEC sp_addextendedproperty 'MS_Description', ${U(e.comment)}, 'SCHEMA', ${U(t)}, 'TABLE', ${U(n)}, 'COLUMN', ${U(e.name)};`);return l.join(`
|
|
242
|
+
`)}async function gt(e,t,n){return h((await e(`SELECT OBJECT_DEFINITION(${ut(t,n)})`)).records[0]?.[0])}async function _t(e,t){return(await e(`SELECT tr.name, o.name AS table_name FROM sys.triggers tr
|
|
243
|
+
JOIN sys.objects o ON o.object_id = tr.parent_id
|
|
244
|
+
JOIN sys.schemas s ON s.schema_id = o.schema_id
|
|
245
|
+
WHERE s.name = ${U(t)} AND tr.is_ms_shipped = 0 ORDER BY o.name, tr.name`)).records.map(e=>({name:m(e[0]),table:m(e[1])}))}var vt={async listCatalogs(e){return W(e,`SELECT name FROM sys.databases WHERE database_id > 4 OR name = DB_NAME() ORDER BY name`)},async currentCatalog(e){return m((await e(`SELECT DB_NAME()`)).records[0]?.[0])},async listDatabases(e){return W(e,`SELECT s.name FROM sys.schemas s WHERE ${dt} ORDER BY CASE WHEN s.name = 'dbo' THEN 0 ELSE 1 END, s.name`)},listTables:(e,t)=>J(e,t),listViews:(e,t)=>W(e,`SELECT v.name FROM sys.views v JOIN sys.schemas s ON s.schema_id = v.schema_id WHERE s.name = ${U(t)} ORDER BY v.name`),listProcedures:(e,t)=>W(e,`SELECT p.name FROM sys.procedures p JOIN sys.schemas s ON s.schema_id = p.schema_id WHERE s.name = ${U(t)} ORDER BY p.name`),listFunctions:(e,t)=>W(e,`SELECT o.name FROM sys.objects o JOIN sys.schemas s ON s.schema_id = o.schema_id WHERE s.name = ${U(t)} AND o.type IN ('FN', 'IF', 'TF', 'AF') ORDER BY o.name`),async listTriggers(e,t){return(await _t(e,t)).map(e=>e.name)},listTriggerDetails:_t,listEvents:async()=>[],async listColumns(e,t,n){let[r,i]=await Promise.all([G(e,t,n),K(e,t,n)]);return mt(r,i)},async listIndexes(e,t,n){return(await K(e,t,n)).map(pt)},async listAllColumns(e,t){let[n,r]=await Promise.all([G(e,t),K(e,t)]),i=q(r),a=new Map;for(let[e,t]of q(n))a.set(e,mt(t,i.get(e)??[]));return a},async listAllIndexes(e,t){let n=new Map;for(let[r,i]of q(await K(e,t)))n.set(r,i.map(pt));return n},async listForeignKeys(e,t){return(await e(`SELECT fk.name, o.name AS table_name, c.name AS column_name, rt.name AS ref_table, rc.name AS ref_column
|
|
246
|
+
FROM sys.foreign_keys fk
|
|
247
|
+
JOIN sys.foreign_key_columns fkc ON fkc.constraint_object_id = fk.object_id
|
|
248
|
+
JOIN sys.objects o ON o.object_id = fk.parent_object_id
|
|
249
|
+
JOIN sys.schemas s ON s.schema_id = o.schema_id
|
|
250
|
+
JOIN sys.columns c ON c.object_id = fkc.parent_object_id AND c.column_id = fkc.parent_column_id
|
|
251
|
+
JOIN sys.objects rt ON rt.object_id = fk.referenced_object_id
|
|
252
|
+
JOIN sys.columns rc ON rc.object_id = fkc.referenced_object_id AND rc.column_id = fkc.referenced_column_id
|
|
253
|
+
WHERE s.name = ${U(t)}
|
|
254
|
+
ORDER BY o.name, fk.name, fkc.constraint_column_id`)).records.map(e=>({name:m(e[0]),table:m(e[1]),column:m(e[2]),refTable:m(e[3]),refColumn:m(e[4])}))},async getTableInfo(e,t,n){return(await J(e,t,n))[0]??null},async getPrimaryKeys(e,t,n){return(await K(e,t,n)).find(e=>e.primary)?.columns??[]},async getCreateStatement(e,t,n,r){switch(n){case`TABLE`:return ht(e,t,r);case`VIEW`:case`PROCEDURE`:case`FUNCTION`:case`TRIGGER`:return gt(e,t,r);default:return null}}},yt={SELECT_COUNT:`SELECT COUNT(1) AS cnt FROM [{0}].[{1}]`,SHOW_FULL_FIELDS:`SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '{0}' AND TABLE_NAME = '{1}' ORDER BY ORDINAL_POSITION`,SHOW_COLUMNS:`SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '{0}' AND TABLE_NAME = '{1}' ORDER BY ORDINAL_POSITION`,SHOW_DATABASE_VIEWS:`SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = '{0}' ORDER BY TABLE_NAME`,SHOW_DATABASE_TABLES:`SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{0}' AND TABLE_TYPE = 'BASE TABLE' ORDER BY TABLE_NAME`,SHOW_DATABASE:`SELECT SCHEMA_NAME()`,SHOW_DATABASES:`SELECT name FROM sys.schemas WHERE schema_id < 16384 AND name NOT IN ('sys', 'INFORMATION_SCHEMA', 'guest') ORDER BY name`,ADD_INDEX:`CREATE {3} INDEX [{2}] ON [{0}].[{1}] ({4})`,SHOW_INDEXES:`SELECT i.name AS index_name, i.type_desc, i.is_unique FROM sys.indexes i JOIN sys.objects o ON o.object_id = i.object_id JOIN sys.schemas s ON s.schema_id = o.schema_id WHERE s.name = '{0}' AND o.name = '{1}' AND i.name IS NOT NULL ORDER BY i.name`,DROP_INDEX:`DROP INDEX [{2}] ON [{0}].[{1}]`,DROP_PROCEDURE:`DROP PROCEDURE {2} [{0}].[{1}]`,DROP_FUNCTION:`DROP FUNCTION {2} [{0}].[{1}]`,DROP_TRIGGER:`DROP TRIGGER {2} [{0}].[{1}]`,DROP_VIEW:`DROP VIEW {2} [{0}].[{1}]`,SHOW_PROCEDURES:`SELECT p.name FROM sys.procedures p JOIN sys.schemas s ON s.schema_id = p.schema_id WHERE s.name = '{0}' ORDER BY p.name`,SHOW_FUNCTIONS:`SELECT o.name FROM sys.objects o JOIN sys.schemas s ON s.schema_id = o.schema_id WHERE s.name = '{0}' AND o.type IN ('FN', 'IF', 'TF', 'AF') ORDER BY o.name`,SHOW_TRIGGERS:`SELECT tr.name, o.name AS table_name FROM sys.triggers tr JOIN sys.objects o ON o.object_id = tr.parent_id JOIN sys.schemas s ON s.schema_id = o.schema_id WHERE s.name = '{0}' ORDER BY tr.name`,SHOW_VIEWS:`SELECT TABLE_NAME AS [View_name], VIEW_DEFINITION AS [View_definition] FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = '{0}' ORDER BY TABLE_NAME`,SHOW_ALL_TABLE_STATUS:`SELECT t.name AS [Name], SUM(p.rows) AS [Rows], t.create_date AS [Create_time], t.modify_date AS [Update_time] FROM sys.tables t JOIN sys.schemas s ON s.schema_id = t.schema_id LEFT JOIN sys.partitions p ON p.object_id = t.object_id AND p.index_id IN (0, 1) WHERE s.name = '{0}' GROUP BY t.name, t.create_date, t.modify_date ORDER BY t.name`,SHOW_TABLE_STATUS:`SELECT t.name AS [Name], SUM(p.rows) AS [Rows], t.create_date AS [Create_time], t.modify_date AS [Update_time] FROM sys.tables t JOIN sys.schemas s ON s.schema_id = t.schema_id LEFT JOIN sys.partitions p ON p.object_id = t.object_id AND p.index_id IN (0, 1) WHERE s.name = '{0}' AND t.name = '{1}' GROUP BY t.name, t.create_date, t.modify_date`,INSERT_TABLE:`INSERT INTO [{0}].[{1}] ({2}) VALUES({3});`,INSERT_TABLE_BULK:`INSERT INTO [{0}].[{1}] ({2}) VALUES {3};`,INSERT_DEFAULT_VALUES:`INSERT INTO [{0}].[{1}] DEFAULT VALUES;`,UPDATE_TABLE:`UPDATE [{0}].[{1}] SET {2} WHERE {3};`,UPDATE_TABLE_SINGLE:`UPDATE TOP (1) [{0}].[{1}] SET {2} WHERE {3}`,START_TRANSACTION:`BEGIN TRANSACTION`,COMMIT:`COMMIT`,ROLLBACK:`ROLLBACK`,DELETE_TABLE:`DELETE FROM [{0}].[{1}] WHERE {2};`,SELECT_TABLE:`SELECT {2} FROM [{0}].[{1}] {3};`,TRUNCATE_TABLE:`TRUNCATE TABLE [{0}].[{1}]`,RENAME_TABLE:`EXEC sp_rename '{0}.{1}', '{3}'`,DROP_TABLE:`DROP TABLE {2} [{0}].[{1}]`,CREATE_PROCEDURE:`CREATE PROCEDURE [{0}].[{1}]
|
|
255
|
+
AS
|
|
256
|
+
BEGIN
|
|
257
|
+
SET NOCOUNT ON;
|
|
258
|
+
|
|
259
|
+
/* SQL Statements */
|
|
260
|
+
|
|
261
|
+
END;`,CREATE_FUNCTION:`CREATE FUNCTION [{0}].[{1}]()
|
|
262
|
+
RETURNS INT
|
|
263
|
+
AS
|
|
264
|
+
BEGIN
|
|
265
|
+
|
|
266
|
+
/* SQL Statements */
|
|
267
|
+
RETURN 0;
|
|
268
|
+
|
|
269
|
+
END;`,CREATE_TRIGGER:`CREATE TRIGGER [{0}].[{1}]
|
|
270
|
+
ON [{0}].[<Table Name>]
|
|
271
|
+
AFTER INSERT
|
|
272
|
+
-- , UPDATE, DELETE
|
|
273
|
+
AS
|
|
274
|
+
BEGIN
|
|
275
|
+
SET NOCOUNT ON;
|
|
276
|
+
|
|
277
|
+
/* SQL Statements */
|
|
278
|
+
|
|
279
|
+
END;`,CREATE_VIEW:`CREATE VIEW [{0}].[{1}] AS
|
|
280
|
+
/* SQL SELECT Statement */`,CREATE_TABLE:`CREATE TABLE [{0}].[{1}] {2}`,ALTER_TABLE:`ALTER TABLE [{0}].[{1}] {2}`,ALTER_VIEW:`DROP VIEW IF EXISTS [{0}].[{1}];
|
|
281
|
+
GO
|
|
282
|
+
{2}`,ALTER_PROCEDURE:`DROP PROCEDURE IF EXISTS [{0}].[{1}];
|
|
283
|
+
GO
|
|
284
|
+
{2}`,ALTER_FUNCTION:`DROP FUNCTION IF EXISTS [{0}].[{1}];
|
|
285
|
+
GO
|
|
286
|
+
{2}`,ALTER_TRIGGER:`DROP TRIGGER IF EXISTS [{0}].[{1}];
|
|
287
|
+
GO
|
|
288
|
+
{2}`,SHOW_PROCESS_LIST:`SELECT s.session_id AS [Id], s.login_name AS [User], COALESCE(c.client_net_address, 'local') AS [Host], DB_NAME(s.database_id) AS [db], COALESCE(r.status, s.status) AS [Command], COALESCE(DATEDIFF(SECOND, r.start_time, GETDATE()), 0) AS [Time], COALESCE(r.wait_type, '') AS [State], t.text AS [Info] FROM sys.dm_exec_sessions s LEFT JOIN sys.dm_exec_connections c ON c.session_id = s.session_id LEFT JOIN sys.dm_exec_requests r ON r.session_id = s.session_id OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) t WHERE s.is_user_process = 1 ORDER BY s.session_id`,KILL_QUERY:`KILL {0}`,SHOW_VARIABLES:`SELECT name AS [Variable_name], CAST(value_in_use AS NVARCHAR(100)) AS [Value] FROM sys.configurations ORDER BY name`,SHOW_GLOBAL_VARIABLES:`SELECT name AS [Variable_name], CAST(value AS NVARCHAR(100)) AS [Value] FROM sys.configurations ORDER BY name`,SHOW_SESSION_VARIABLES:`SELECT name AS [Variable_name], CAST(value_in_use AS NVARCHAR(100)) AS [Value] FROM sys.configurations ORDER BY name`,CREATE_SCHEMA:`CREATE SCHEMA [{0}]`,DROP_SCHEMA:`DROP SCHEMA [{0}]`,COPY_TABLE_STRUCTURE:`SELECT TOP 0 * INTO [{2}].[{3}] FROM [{0}].[{1}]`,COPY_TABLE_DATA:`INSERT INTO [{2}].[{3}] SELECT * FROM [{0}].[{1}]`,DISABLE_FK_CHECKS:`EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'`,ENABLE_FK_CHECKS:`EXEC sp_msforeachtable 'ALTER TABLE ? WITH CHECK CHECK CONSTRAINT ALL'`},bt=`ASCII.CHAR.CHARINDEX.CONCAT.CONCAT_WS.FORMAT.LEFT.LEN.LOWER.LTRIM.NCHAR.PATINDEX.QUOTENAME.REPLACE.REPLICATE.REVERSE.RIGHT.RTRIM.SPACE.STR.STRING_AGG.STRING_SPLIT.STUFF.SUBSTRING.TRANSLATE.TRIM.UNICODE.UPPER.ABS.CEILING.EXP.FLOOR.LOG.LOG10.PI.POWER.RAND.ROUND.SIGN.SQRT.SQUARE.CURRENT_TIMESTAMP.DATEADD.DATEDIFF.DATEDIFF_BIG.DATEFROMPARTS.DATENAME.DATEPART.DATETIMEFROMPARTS.DAY.EOMONTH.GETDATE.GETUTCDATE.ISDATE.MONTH.SYSDATETIME.SYSDATETIMEOFFSET.SYSUTCDATETIME.YEAR.AVG.COUNT.COUNT_BIG.MAX.MIN.STDEV.SUM.VAR.ROW_NUMBER.RANK.DENSE_RANK.NTILE.LAG.LEAD.FIRST_VALUE.LAST_VALUE.CAST.CONVERT.TRY_CAST.TRY_CONVERT.PARSE.COALESCE.NULLIF.ISNULL.IIF.CHOOSE.NEWID.NEWSEQUENTIALID.SCOPE_IDENTITY.IDENT_CURRENT.OBJECT_ID.OBJECT_NAME.OBJECT_DEFINITION.SCHEMA_NAME.DB_NAME.HOST_NAME.SUSER_SNAME.USER_NAME.ISNUMERIC.ISJSON.JSON_VALUE.JSON_QUERY.JSON_MODIFY.OPENJSON`.split(`.`),xt=`ADD.ALL.ALTER.AND.ANY.AS.ASC.AUTHORIZATION.BACKUP.BEGIN.BETWEEN.BREAK.BROWSE.BULK.BY.CASCADE.CASE.CHECK.CHECKPOINT.CLOSE.CLUSTERED.COALESCE.COLLATE.COLUMN.COMMIT.COMPUTE.CONSTRAINT.CONTAINS.CONTAINSTABLE.CONTINUE.CONVERT.CREATE.CROSS.CURRENT.CURRENT_DATE.CURRENT_TIME.CURRENT_TIMESTAMP.CURRENT_USER.CURSOR.DATABASE.DBCC.DEALLOCATE.DECLARE.DEFAULT.DELETE.DENY.DESC.DISK.DISTINCT.DISTRIBUTED.DOUBLE.DROP.DUMP.ELSE.END.ERRLVL.ESCAPE.EXCEPT.EXEC.EXECUTE.EXISTS.EXIT.EXTERNAL.FETCH.FILE.FILLFACTOR.FOR.FOREIGN.FREETEXT.FREETEXTTABLE.FROM.FULL.FUNCTION.GO.GOTO.GRANT.GROUP.GROUP BY.HAVING.HOLDLOCK.IDENTITY.IDENTITY_INSERT.IDENTITYCOL.IF.IN.INDEX.INNER.INSERT.INSERT INTO.INTERSECT.INTO.IS.JOIN.KEY.KILL.LEFT.LIKE.LINENO.LOAD.MERGE.NATIONAL.NEXT.NOCHECK.NONCLUSTERED.NOT.NULL.NULLIF.OF.OFF.OFFSET.OFFSETS.ON.ONLY.OPEN.OPENDATASOURCE.OPENQUERY.OPENROWSET.OPENXML.OPTION.OR.ORDER.ORDER BY.OUTER.OUTPUT.OVER.PERCENT.PIVOT.PLAN.PRECISION.PRIMARY.PRINT.PROC.PROCEDURE.PUBLIC.RAISERROR.READ.READTEXT.RECONFIGURE.REFERENCES.REPLICATION.RESTORE.RESTRICT.RETURN.REVERT.REVOKE.RIGHT.ROLLBACK.ROWCOUNT.ROWGUIDCOL.ROWS.RULE.SAVE.SCHEMA.SECURITYAUDIT.SELECT.SEMANTICKEYPHRASETABLE.SEMANTICSIMILARITYDETAILSTABLE.SEMANTICSIMILARITYTABLE.SESSION_USER.SET.SETUSER.SHUTDOWN.SOME.STATISTICS.SYSTEM_USER.TABLE.TABLESAMPLE.TEXTSIZE.THEN.TO.TOP.TRAN.TRANSACTION.TRIGGER.TRUNCATE.TRY_CONVERT.TSEQUAL.UNION.UNIQUE.UNPIVOT.UPDATE.UPDATETEXT.USE.USER.VALUES.VARYING.VIEW.WAITFOR.WHEN.WHERE.WHILE.WITH.WITHIN GROUP.WRITETEXT`.split(`.`),St=`bigint.binary.bit.char.date.datetime.datetime2.datetimeoffset.decimal.float.geography.geometry.hierarchyid.image.int.money.nchar.ntext.numeric.nvarchar.real.smalldatetime.smallint.smallmoney.sql_variant.text.time.timestamp.tinyint.uniqueidentifier.varbinary.varchar.xml`.split(`.`),Ct={hashComments:!1,dashCommentNeedsSpace:!1,backslashEscapes:!1,doubleQuoteIsIdentifier:!0,bracketIdentifiers:!0,delimiterCommand:!1,dollarQuotes:!1,goBatchSeparator:!0,limitStyle:`top`,plsqlBlocks:!1};function wt(e){let{quoteIdentifier:t,quoteLiteral:n,qualify:i}=e;return{...r(e,{addColumn:`ADD`,modify:`mssql`,qualifiedIndexNames:!1,dropIndexOnTable:!0,unqualifiedIndexTarget:!1,multiRowInsert:!0,mysqlAttributes:!1,fulltext:!1,upperCaseTypes:!1}),createTable(e){if(!e.name&&e.columns.length===0)return`-- Define a table name and columns to generate SQL.`;let r=_(e.name,`untitled`),a=e.database||`dbo`,o=i(a,r),s=e.columns.filter(e=>e.primaryKey),c=e.columns.map(e=>{let n=` ${t(_(e.name,`column`))} ${e.type}`;return e.length&&(n+=`(${e.length})`),e.autoIncrement&&(n+=` IDENTITY(1,1)`),n+=e.notNull||e.primaryKey?` NOT NULL`:` NULL`,e.defaultValue&&(n+=` DEFAULT ${e.defaultValue}`),n});s.length>0&&c.push(` PRIMARY KEY (${s.map(e=>t(e.name)).join(`, `)})`);let l=[`CREATE TABLE ${o} (\n${c.join(`,
|
|
289
|
+
`)}\n);`];for(let n of e.indexes){if(n.type===`PRIMARY`||n.columns.length===0)continue;let e=n.type===`UNIQUE`?`UNIQUE `:``,i=n.type===`FULLTEXT`?` -- FULLTEXT needs a full-text catalog; created as a plain index`:``,a=t(_(n.name,`${r}_${n.columns.join(`_`)}_idx`));l.push(`CREATE ${e}INDEX ${a} ON ${o} (${n.columns.map(t).join(`, `)});${i}`)}e.options.comment&&l.push(`EXEC sp_addextendedproperty 'MS_Description', ${n(e.options.comment)}, 'SCHEMA', ${n(a)}, 'TABLE', ${n(r)};`);for(let t of e.columns)t.comment&&l.push(`EXEC sp_addextendedproperty 'MS_Description', ${n(t.comment)}, 'SCHEMA', ${n(a)}, 'TABLE', ${n(r)}, 'COLUMN', ${n(_(t.name,`column`))};`);return l.join(`
|
|
290
|
+
`)}}}var Tt=v({id:`mssql`,label:`SQL Server`,capabilities:{multipleDatabases:!1,users:!1,procedures:!0,functions:!0,triggers:!0,events:!1,processList:!0,variables:!0,status:!1,flush:!1,tableProperties:!1,implicitCommitDdl:!1,transactions:!0},ddl:wt,introspect:vt,tree:Ue,defaultPort:1433,binaryLiteral:e=>`0x${e}`,booleanKeywords:!1,identifierQuote:`[`,identifierQuoteClose:`]`,queries:yt,syntax:Ct,dataTypes:St,functions:bt,reservedWords:xt}),Y=e=>`'${e.replace(/'/g,`''`)}'`;async function X(e,t){return(await e(t)).records.map(e=>m(e[0]))}function Et(e,t,n,r,i){return[`VARCHAR2`,`NVARCHAR2`,`CHAR`,`NCHAR`,`RAW`].includes(e)?`${e}(${n||t||0})`:e===`NUMBER`?r===null?`NUMBER`:i?`NUMBER(${r},${i})`:`NUMBER(${r})`:e===`FLOAT`&&r!==null?`FLOAT(${r})`:e}async function Dt(e,t,n){return p(await e(`SELECT c.table_name, c.column_name, c.data_type, c.data_length, c.char_length, c.data_precision, c.data_scale,
|
|
291
|
+
c.nullable, c.data_default, cc.comments,
|
|
292
|
+
CASE WHEN ic.column_name IS NOT NULL THEN 1 ELSE 0 END AS is_identity
|
|
293
|
+
FROM all_tab_columns c
|
|
294
|
+
LEFT JOIN all_col_comments cc ON cc.owner = c.owner AND cc.table_name = c.table_name AND cc.column_name = c.column_name
|
|
295
|
+
LEFT JOIN all_tab_identity_cols ic ON ic.owner = c.owner AND ic.table_name = c.table_name AND ic.column_name = c.column_name
|
|
296
|
+
WHERE c.owner = ${Y(t)}${n?` AND c.table_name = ${Y(n)}`:``}
|
|
297
|
+
ORDER BY c.table_name, c.column_id`)).map(e=>({table:m(e.TABLE_NAME),name:m(e.COLUMN_NAME),type:Et(m(e.DATA_TYPE),g(e.DATA_LENGTH),g(e.CHAR_LENGTH),g(e.DATA_PRECISION),g(e.DATA_SCALE)),nullable:m(e.NULLABLE)===`Y`,defaultValue:h(e.DATA_DEFAULT)?.trim()??null,identity:Number(e.IS_IDENTITY)===1,comment:m(e.COMMENTS)}))}async function Z(e,t,n){return p(await e(`SELECT i.table_name, i.index_name, i.uniqueness,
|
|
298
|
+
CASE WHEN EXISTS (SELECT 1 FROM all_constraints k WHERE k.owner = i.table_owner AND k.table_name = i.table_name AND k.constraint_type = 'P' AND k.index_name = i.index_name) THEN 1 ELSE 0 END AS is_primary,
|
|
299
|
+
LISTAGG(ic.column_name, CHR(10)) WITHIN GROUP (ORDER BY ic.column_position) AS columns
|
|
300
|
+
FROM all_indexes i
|
|
301
|
+
JOIN all_ind_columns ic ON ic.index_owner = i.owner AND ic.index_name = i.index_name
|
|
302
|
+
WHERE i.table_owner = ${Y(t)}${n?` AND i.table_name = ${Y(n)}`:``}
|
|
303
|
+
GROUP BY i.table_owner, i.table_name, i.index_name, i.uniqueness
|
|
304
|
+
ORDER BY i.table_name, is_primary DESC, i.index_name`)).map(e=>({table:m(e.TABLE_NAME),name:m(e.INDEX_NAME),primary:Number(e.IS_PRIMARY)===1,unique:m(e.UNIQUENESS)===`UNIQUE`,columns:m(e.COLUMNS).split(`
|
|
305
|
+
`).filter(Boolean)}))}function Ot(e){return{name:e.primary?`PRIMARY`:e.name,type:e.primary?`PRIMARY`:e.unique?`UNIQUE`:`INDEX`,columns:e.columns}}function kt(e,t){let n=new Set,r=new Set,i=new Set;for(let e of t)e.primary?e.columns.forEach(e=>n.add(e)):e.unique&&e.columns.length===1?r.add(e.columns[0]):e.columns.length>0&&i.add(e.columns[0]);return e.map(e=>({name:e.name,type:e.type,nullable:e.nullable,key:n.has(e.name)?`PRI`:r.has(e.name)?`UNI`:i.has(e.name)?`MUL`:``,defaultValue:e.defaultValue,extra:e.identity?`identity`:``,comment:e.comment,collation:null}))}function Q(e){let t=new Map;for(let n of e){let e=t.get(n.table);e?e.push(n):t.set(n.table,[n])}return t}async function At(e,t,n){return p(await e(`SELECT t.table_name, t.num_rows, t.last_analyzed, tc.comments,
|
|
306
|
+
(SELECT SUM(s.bytes) FROM all_segments s WHERE s.owner = t.owner AND s.segment_name = t.table_name) AS bytes
|
|
307
|
+
FROM all_tables t
|
|
308
|
+
LEFT JOIN all_tab_comments tc ON tc.owner = t.owner AND tc.table_name = t.table_name
|
|
309
|
+
WHERE t.owner = ${Y(t)}${n?` AND t.table_name = ${Y(n)}`:``}
|
|
310
|
+
ORDER BY t.table_name`)).map(e=>({name:m(e.TABLE_NAME),engine:null,rows:g(e.NUM_ROWS),collation:null,autoIncrement:null,comment:m(e.COMMENTS),createTime:null,updateTime:h(e.LAST_ANALYZED),dataLength:g(e.BYTES)}))}var jt={TABLE:`TABLE`,VIEW:`VIEW`,PROCEDURE:`PROCEDURE`,FUNCTION:`FUNCTION`,TRIGGER:`TRIGGER`,EVENT:null};async function Mt(e,t){return(await e(`SELECT trigger_name, table_name FROM all_triggers WHERE owner = ${Y(t)} ORDER BY table_name, trigger_name`)).records.map(e=>({name:m(e[0]),table:m(e[1])}))}var Nt={async listDatabases(e){return X(e,`SELECT username FROM all_users WHERE oracle_maintained = 'N'
|
|
311
|
+
ORDER BY CASE WHEN username = SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') THEN 0 ELSE 1 END, username`)},listTables:(e,t)=>At(e,t),listViews:(e,t)=>X(e,`SELECT view_name FROM all_views WHERE owner = ${Y(t)} ORDER BY view_name`),listProcedures:(e,t)=>X(e,`SELECT object_name FROM all_objects WHERE owner = ${Y(t)} AND object_type = 'PROCEDURE' ORDER BY object_name`),listFunctions:(e,t)=>X(e,`SELECT object_name FROM all_objects WHERE owner = ${Y(t)} AND object_type = 'FUNCTION' ORDER BY object_name`),async listTriggers(e,t){return(await Mt(e,t)).map(e=>e.name)},listTriggerDetails:Mt,listEvents:async()=>[],async listColumns(e,t,n){let[r,i]=await Promise.all([Dt(e,t,n),Z(e,t,n)]);return kt(r,i)},async listIndexes(e,t,n){return(await Z(e,t,n)).map(Ot)},async listAllColumns(e,t){let[n,r]=await Promise.all([Dt(e,t),Z(e,t)]),i=Q(r),a=new Map;for(let[e,t]of Q(n))a.set(e,kt(t,i.get(e)??[]));return a},async listAllIndexes(e,t){let n=new Map;for(let[r,i]of Q(await Z(e,t)))n.set(r,i.map(Ot));return n},async listForeignKeys(e,t){return(await e(`SELECT c.constraint_name, c.table_name, cc.column_name, r.table_name AS ref_table, rc.column_name AS ref_column
|
|
312
|
+
FROM all_constraints c
|
|
313
|
+
JOIN all_cons_columns cc ON cc.owner = c.owner AND cc.constraint_name = c.constraint_name
|
|
314
|
+
JOIN all_constraints r ON r.owner = c.r_owner AND r.constraint_name = c.r_constraint_name
|
|
315
|
+
JOIN all_cons_columns rc ON rc.owner = r.owner AND rc.constraint_name = r.constraint_name AND rc.position = cc.position
|
|
316
|
+
WHERE c.owner = ${Y(t)} AND c.constraint_type = 'R'
|
|
317
|
+
ORDER BY c.table_name, c.constraint_name, cc.position`)).records.map(e=>({name:m(e[0]),table:m(e[1]),column:m(e[2]),refTable:m(e[3]),refColumn:m(e[4])}))},async getTableInfo(e,t,n){return(await At(e,t,n))[0]??null},async getPrimaryKeys(e,t,n){return(await e(`SELECT cc.column_name FROM all_constraints c
|
|
318
|
+
JOIN all_cons_columns cc ON cc.owner = c.owner AND cc.constraint_name = c.constraint_name
|
|
319
|
+
WHERE c.owner = ${Y(t)} AND c.table_name = ${Y(n)} AND c.constraint_type = 'P'
|
|
320
|
+
ORDER BY cc.position`)).records.map(e=>m(e[0]))},async getCreateStatement(e,t,n,r){let i=jt[n];return i?h((await e(`SELECT DBMS_METADATA.GET_DDL(${Y(i)}, ${Y(r)}, ${Y(t)}) FROM dual`)).records[0]?.[0])?.trim()??null:null}},Pt={SELECT_COUNT:`SELECT COUNT(1) AS cnt FROM "{0}"."{1}"`,SHOW_FULL_FIELDS:`SELECT column_name, data_type, nullable, data_default FROM all_tab_columns WHERE owner = '{0}' AND table_name = '{1}' ORDER BY column_id`,SHOW_COLUMNS:`SELECT column_name, data_type, nullable, data_default FROM all_tab_columns WHERE owner = '{0}' AND table_name = '{1}' ORDER BY column_id`,SHOW_DATABASE_VIEWS:`SELECT view_name FROM all_views WHERE owner = '{0}' ORDER BY view_name`,SHOW_DATABASE_TABLES:`SELECT table_name FROM all_tables WHERE owner = '{0}' ORDER BY table_name`,SHOW_DATABASE:`SELECT SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') FROM dual`,SHOW_DATABASES:`SELECT username FROM all_users WHERE oracle_maintained = 'N' ORDER BY username`,ADD_INDEX:`CREATE {3} INDEX "{0}"."{2}" ON "{0}"."{1}" ({4})`,SHOW_INDEXES:`SELECT index_name, uniqueness, index_type FROM all_indexes WHERE table_owner = '{0}' AND table_name = '{1}' ORDER BY index_name`,DROP_INDEX:`DROP INDEX "{0}"."{2}"`,DROP_PROCEDURE:`DROP PROCEDURE "{0}"."{1}"`,DROP_FUNCTION:`DROP FUNCTION "{0}"."{1}"`,DROP_TRIGGER:`DROP TRIGGER "{0}"."{1}"`,DROP_VIEW:`DROP VIEW "{0}"."{1}"`,SHOW_PROCEDURES:`SELECT object_name FROM all_objects WHERE owner = '{0}' AND object_type = 'PROCEDURE' ORDER BY object_name`,SHOW_FUNCTIONS:`SELECT object_name FROM all_objects WHERE owner = '{0}' AND object_type = 'FUNCTION' ORDER BY object_name`,SHOW_TRIGGERS:`SELECT trigger_name, table_name FROM all_triggers WHERE owner = '{0}' ORDER BY trigger_name`,SHOW_VIEWS:`SELECT view_name AS "View_name", text_vc AS "View_definition" FROM all_views WHERE owner = '{0}' ORDER BY view_name`,SHOW_ALL_TABLE_STATUS:`SELECT t.table_name AS "Name", t.num_rows AS "Rows", c.comments AS "Comment" FROM all_tables t LEFT JOIN all_tab_comments c ON c.owner = t.owner AND c.table_name = t.table_name WHERE t.owner = '{0}' ORDER BY t.table_name`,SHOW_TABLE_STATUS:`SELECT t.table_name AS "Name", t.num_rows AS "Rows", c.comments AS "Comment" FROM all_tables t LEFT JOIN all_tab_comments c ON c.owner = t.owner AND c.table_name = t.table_name WHERE t.owner = '{0}' AND t.table_name = '{1}'`,INSERT_TABLE:`INSERT INTO "{0}"."{1}" ({2}) VALUES({3})`,INSERT_TABLE_BULK:`INSERT INTO "{0}"."{1}" ({2}) VALUES {3}`,INSERT_DEFAULT_VALUES:`INSERT INTO "{0}"."{1}" ({2}) VALUES (DEFAULT)`,UPDATE_TABLE:`UPDATE "{0}"."{1}" SET {2} WHERE {3}`,UPDATE_TABLE_SINGLE:`UPDATE "{0}"."{1}" SET {2} WHERE {3} AND ROWNUM = 1`,START_TRANSACTION:`SET TRANSACTION READ WRITE`,COMMIT:`COMMIT`,ROLLBACK:`ROLLBACK`,DELETE_TABLE:`DELETE FROM "{0}"."{1}" WHERE {2}`,SELECT_TABLE:`SELECT {2} FROM "{0}"."{1}" {3}`,TRUNCATE_TABLE:`TRUNCATE TABLE "{0}"."{1}"`,RENAME_TABLE:`ALTER TABLE "{0}"."{1}" RENAME TO "{3}"`,DROP_TABLE:`DROP TABLE "{0}"."{1}"`,CREATE_PROCEDURE:`CREATE OR REPLACE PROCEDURE "{0}"."{1}"
|
|
321
|
+
IS
|
|
322
|
+
BEGIN
|
|
323
|
+
|
|
324
|
+
/* SQL Statements */
|
|
325
|
+
NULL;
|
|
326
|
+
|
|
327
|
+
END;
|
|
328
|
+
/`,CREATE_FUNCTION:`CREATE OR REPLACE FUNCTION "{0}"."{1}"
|
|
329
|
+
RETURN NUMBER
|
|
330
|
+
IS
|
|
331
|
+
BEGIN
|
|
332
|
+
|
|
333
|
+
/* SQL Statements */
|
|
334
|
+
RETURN 0;
|
|
335
|
+
|
|
336
|
+
END;
|
|
337
|
+
/`,CREATE_TRIGGER:`CREATE OR REPLACE TRIGGER "{0}"."{1}"
|
|
338
|
+
BEFORE
|
|
339
|
+
-- AFTER
|
|
340
|
+
INSERT
|
|
341
|
+
-- OR UPDATE
|
|
342
|
+
-- OR DELETE
|
|
343
|
+
ON "{0}"."<Table Name>" FOR EACH ROW
|
|
344
|
+
BEGIN
|
|
345
|
+
|
|
346
|
+
/* SQL Statements */
|
|
347
|
+
NULL;
|
|
348
|
+
|
|
349
|
+
END;
|
|
350
|
+
/`,CREATE_VIEW:`CREATE OR REPLACE VIEW "{0}"."{1}" AS
|
|
351
|
+
/* SQL SELECT Statement */`,CREATE_TABLE:`CREATE TABLE "{0}"."{1}" {2}`,ALTER_TABLE:`ALTER TABLE "{0}"."{1}" {2}`,ALTER_VIEW:`{2}`,ALTER_PROCEDURE:`{2}`,ALTER_FUNCTION:`{2}`,ALTER_TRIGGER:`{2}`,SHOW_PROCESS_LIST:`SELECT s.sid || ',' || s.serial# AS "Id", s.username AS "User", s.machine AS "Host", s.schemaname AS "db", s.status AS "Command", COALESCE(s.last_call_et, 0) AS "Time", s.event AS "State", s.sql_id AS "Info" FROM v$session s WHERE s.type = 'USER' ORDER BY s.sid`,KILL_QUERY:`ALTER SYSTEM KILL SESSION '{0}' IMMEDIATE`,SHOW_VARIABLES:`SELECT name AS "Variable_name", value AS "Value" FROM v$parameter ORDER BY name`,SHOW_GLOBAL_VARIABLES:`SELECT name AS "Variable_name", value AS "Value" FROM v$parameter ORDER BY name`,SHOW_SESSION_VARIABLES:`SELECT parameter AS "Variable_name", value AS "Value" FROM nls_session_parameters ORDER BY parameter`,COPY_TABLE_STRUCTURE:`CREATE TABLE "{2}"."{3}" AS SELECT * FROM "{0}"."{1}" WHERE 1 = 0`,COPY_TABLE_DATA:`INSERT INTO "{2}"."{3}" SELECT * FROM "{0}"."{1}"`},Ft=`ASCII,CHR,CONCAT,INITCAP,INSTR,LENGTH,LOWER,LPAD,LTRIM,NLSSORT,REGEXP_INSTR,REGEXP_REPLACE,REGEXP_SUBSTR,REPLACE,RPAD,RTRIM,SOUNDEX,SUBSTR,TRANSLATE,TRIM,UPPER,LISTAGG,ABS,CEIL,EXP,FLOOR,LN,LOG,MOD,POWER,REMAINDER,ROUND,SIGN,SQRT,TRUNC,ADD_MONTHS,CURRENT_DATE,CURRENT_TIMESTAMP,EXTRACT,LAST_DAY,LOCALTIMESTAMP,MONTHS_BETWEEN,NEXT_DAY,SYSDATE,SYSTIMESTAMP,TO_CHAR,TO_DATE,TO_TIMESTAMP,TO_TIMESTAMP_TZ,FROM_TZ,NUMTODSINTERVAL,NUMTOYMINTERVAL,CAST,TO_NUMBER,TO_CLOB,COALESCE,NULLIF,NVL,NVL2,DECODE,GREATEST,LEAST,AVG,COUNT,MAX,MEDIAN,MIN,STDDEV,SUM,VARIANCE,ROW_NUMBER,RANK,DENSE_RANK,NTILE,LAG,LEAD,FIRST_VALUE,LAST_VALUE,SYS_GUID,SYS_CONTEXT,USER,UID,ROWNUM,ROWID,DBMS_METADATA.GET_DDL,JSON_VALUE,JSON_QUERY,JSON_OBJECT,JSON_ARRAY,JSON_TABLE,JSON_EXISTS`.split(`,`),It=`ACCESS.ADD.ALL.ALTER.AND.ANY.AS.ASC.AUDIT.BETWEEN.BY.CHAR.CHECK.CLUSTER.COLUMN.COMMENT.COMPRESS.CONNECT.CREATE.CURRENT.DATE.DECIMAL.DEFAULT.DELETE.DESC.DISTINCT.DROP.ELSE.EXCLUSIVE.EXISTS.FILE.FLOAT.FOR.FROM.GRANT.GROUP.GROUP BY.HAVING.IDENTIFIED.IMMEDIATE.IN.INCREMENT.INDEX.INITIAL.INSERT.INSERT INTO.INTEGER.INTERSECT.INTO.IS.LEVEL.LIKE.LOCK.LONG.MAXEXTENTS.MINUS.MLSLABEL.MODE.MODIFY.NOAUDIT.NOCOMPRESS.NOT.NOWAIT.NULL.NUMBER.OF.OFFLINE.ON.ONLINE.OPTION.OR.ORDER.ORDER BY.PCTFREE.PRIOR.PUBLIC.RAW.RENAME.RESOURCE.REVOKE.ROW.ROWID.ROWNUM.ROWS.SELECT.SESSION.SET.SHARE.SIZE.SMALLINT.START.SUCCESSFUL.SYNONYM.SYSDATE.TABLE.THEN.TO.TRIGGER.UID.UNION.UNIQUE.UPDATE.USER.VALIDATE.VALUES.VARCHAR.VARCHAR2.VIEW.WHENEVER.WHERE.WITH.BEGIN.DECLARE.END.EXCEPTION.IF.ELSIF.LOOP.WHILE.RETURN.PROCEDURE.FUNCTION.PACKAGE.BODY.CURSOR.FETCH.FIRST.NEXT.ONLY.OFFSET.COMMIT.ROLLBACK.SAVEPOINT.TRUNCATE.REPLACE.MERGE.USING.MATCHED.JOIN.INNER.LEFT.RIGHT.FULL.OUTER.CROSS.CASE.WHEN.OVER.PARTITION.DUAL.SEQUENCE.NEXTVAL.CURRVAL`.split(`.`),Lt=[`BFILE`,`BINARY_DOUBLE`,`BINARY_FLOAT`,`BLOB`,`BOOLEAN`,`CHAR`,`CLOB`,`DATE`,`FLOAT`,`INTERVAL DAY TO SECOND`,`INTERVAL YEAR TO MONTH`,`JSON`,`LONG`,`NCHAR`,`NCLOB`,`NUMBER`,`NVARCHAR2`,`RAW`,`ROWID`,`TIMESTAMP`,`TIMESTAMP WITH LOCAL TIME ZONE`,`TIMESTAMP WITH TIME ZONE`,`VARCHAR2`,`XMLTYPE`],Rt={hashComments:!1,dashCommentNeedsSpace:!1,backslashEscapes:!1,doubleQuoteIsIdentifier:!0,bracketIdentifiers:!1,delimiterCommand:!1,dollarQuotes:!1,goBatchSeparator:!1,limitStyle:`fetch`,plsqlBlocks:!0};function zt(e){let{quoteIdentifier:t,quoteLiteral:n,qualify:i}=e;return{...r(e,{addColumn:`ADD (`,modify:`oracle`,qualifiedIndexNames:!0,dropIndexOnTable:!1,unqualifiedIndexTarget:!1,multiRowInsert:!1,mysqlAttributes:!1,fulltext:!1,upperCaseTypes:!1}),createTable(e){if(!e.name&&e.columns.length===0)return`-- Define a table name and columns to generate SQL.`;let r=_(e.name,`untitled`),a=i(e.database,r),o=e.columns.filter(e=>e.primaryKey),s=e.columns.map(e=>{let n=` ${t(_(e.name,`column`))} ${e.type}`;return e.length&&(n+=`(${e.length})`),e.autoIncrement&&(n+=` GENERATED BY DEFAULT AS IDENTITY`),e.defaultValue&&(n+=` DEFAULT ${e.defaultValue}`),e.notNull&&(n+=` NOT NULL`),n});o.length>0&&s.push(` PRIMARY KEY (${o.map(e=>t(e.name)).join(`, `)})`);let c=[`CREATE TABLE ${a} (\n${s.join(`,
|
|
352
|
+
`)}\n);`];for(let n of e.indexes){if(n.type===`PRIMARY`||n.columns.length===0)continue;let o=n.type===`UNIQUE`?`UNIQUE `:``,s=n.type===`FULLTEXT`?` -- FULLTEXT is MySQL-only; consider an Oracle Text index`:``,l=i(e.database,_(n.name,`${r}_${n.columns.join(`_`)}_idx`));c.push(`CREATE ${o}INDEX ${l} ON ${a} (${n.columns.map(t).join(`, `)});${s}`)}e.options.comment&&c.push(`COMMENT ON TABLE ${a} IS ${n(e.options.comment)};`);for(let r of e.columns)r.comment&&c.push(`COMMENT ON COLUMN ${a}.${t(_(r.name,`column`))} IS ${n(r.comment)};`);return c.join(`
|
|
353
|
+
`)}}}var $=v({id:`oracle`,label:`Oracle`,capabilities:{multipleDatabases:!1,users:!1,procedures:!0,functions:!0,triggers:!0,events:!1,processList:!0,variables:!0,status:!1,flush:!1,tableProperties:!1,implicitCommitDdl:!0,transactions:!0},ddl:zt,introspect:Nt,defaultPort:1521,binaryLiteral:e=>`HEXTORAW('${e}')`,booleanKeywords:!1,identifierQuote:`"`,queries:Pt,syntax:Rt,dataTypes:Lt,functions:Ft,reservedWords:It}),Bt=v({...N,id:`neon`,label:`Neon`}),Vt=v({...N,id:`supabase`,label:`Supabase`}),Ht=v({...V,id:`d1`,label:`Cloudflare D1`,capabilities:{...V.capabilities,transactions:!1}}),Ut={mysql:C,maria:E,postgres:Xe,sqlite:ct,mssql:Tt,oracle:$,neon:Bt,supabase:Vt,d1:Ht},Wt=[C,E,Xe,ct,Tt,$,Bt,Vt,Ht];function Gt(e){return e&&Ut[e]||C}function Kt(e){return Gt(e?.dbms)}export{o as a,p as i,Gt as n,i as o,Kt as r,Wt as t};
|