diff --git a/package-lock.json b/package-lock.json
index bb481548..6779baeb 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -30,6 +30,7 @@
"plausible-tracker": "^0.3.5",
"qrcode": "^1.5.0",
"randombytes": "^2.1.0",
+ "sql-formatter": "^8.2.0",
"uuid": "^8.3.2",
"vue": "^3.2.31",
"vue-router": "^4.0.12"
@@ -3089,8 +3090,7 @@
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
},
"node_modules/array-ify": {
"version": "1.0.0",
@@ -9580,6 +9580,17 @@
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
"dev": true
},
+ "node_modules/sql-formatter": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/sql-formatter/-/sql-formatter-8.2.0.tgz",
+ "integrity": "sha512-5hQOSOk8jfhPkNgUmpm+9Fn2aaLWcf4vKL/dIvUN5q9rsamKHSyN/gL79xpkETNOyL+Zv5BMQfA7z9Rmz/DJJg==",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "sql-formatter": "bin/sql-formatter-cli.js"
+ }
+ },
"node_modules/stable": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
@@ -13660,8 +13671,7 @@
"argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
},
"array-ify": {
"version": "1.0.0",
@@ -18502,6 +18512,14 @@
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
"dev": true
},
+ "sql-formatter": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/sql-formatter/-/sql-formatter-8.2.0.tgz",
+ "integrity": "sha512-5hQOSOk8jfhPkNgUmpm+9Fn2aaLWcf4vKL/dIvUN5q9rsamKHSyN/gL79xpkETNOyL+Zv5BMQfA7z9Rmz/DJJg==",
+ "requires": {
+ "argparse": "^2.0.1"
+ }
+ },
"stable": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
diff --git a/package.json b/package.json
index 465b81b2..dbbf610d 100644
--- a/package.json
+++ b/package.json
@@ -52,6 +52,7 @@
"plausible-tracker": "^0.3.5",
"qrcode": "^1.5.0",
"randombytes": "^2.1.0",
+ "sql-formatter": "^8.2.0",
"uuid": "^8.3.2",
"vue": "^3.2.31",
"vue-router": "^4.0.12"
diff --git a/src/tools/index.ts b/src/tools/index.ts
index eeed10c9..22613d30 100644
--- a/src/tools/index.ts
+++ b/src/tools/index.ts
@@ -21,6 +21,7 @@ import { tool as mathEvaluator } from './math-evaluator';
import { tool as qrCodeGenerator } from './qr-code-generator';
import { tool as randomPortGenerator } from './random-port-generator';
import { tool as romanNumeralConverter } from './roman-numeral-converter';
+import { tool as sqlPrettify } from './sql-prettify';
import { tool as textStatistics } from './text-statistics';
import { tool as tokenGenerator } from './token-generator';
import { tool as urlEncoder } from './url-encoder';
@@ -53,7 +54,7 @@ export const toolsByCategory: ToolCategory[] = [
{
name: 'Development',
icon: LockOpen,
- components: [gitMemo, randomPortGenerator, crontabGenerator, jsonViewer],
+ components: [gitMemo, randomPortGenerator, crontabGenerator, jsonViewer, sqlPrettify],
},
{
name: 'Math',
diff --git a/src/tools/sql-prettify/index.ts b/src/tools/sql-prettify/index.ts
new file mode 100644
index 00000000..426845fb
--- /dev/null
+++ b/src/tools/sql-prettify/index.ts
@@ -0,0 +1,26 @@
+import { Database } from '@vicons/tabler';
+import { defineTool } from '../tool';
+
+export const tool = defineTool({
+ name: 'SQL prettify and format',
+ path: '/sql-prettify',
+ description: 'Format and prettify your SQL queries online (it supports various SQL dialects).',
+ keywords: [
+ 'sql',
+ 'prettify',
+ 'beautify',
+ 'GCP BigQuery',
+ 'IBM DB2',
+ 'Apache Hive',
+ 'MariaDB',
+ 'MySQL',
+ 'Couchbase N1QL',
+ 'Oracle PL/SQL',
+ 'PostgreSQL',
+ 'Amazon Redshift',
+ 'Spark',
+ 'SQL Server Transact-SQL',
+ ],
+ component: () => import('./sql-prettify.vue'),
+ icon: Database,
+});
diff --git a/src/tools/sql-prettify/sql-prettify.service.test.ts b/src/tools/sql-prettify/sql-prettify.service.test.ts
new file mode 100644
index 00000000..aadcd847
--- /dev/null
+++ b/src/tools/sql-prettify/sql-prettify.service.test.ts
@@ -0,0 +1,6 @@
+import { expect, describe, it } from 'vitest';
+// import { } from './sql-prettify.service';
+//
+// describe('sql-prettify', () => {
+//
+// })
\ No newline at end of file
diff --git a/src/tools/sql-prettify/sql-prettify.service.ts b/src/tools/sql-prettify/sql-prettify.service.ts
new file mode 100644
index 00000000..e69de29b
diff --git a/src/tools/sql-prettify/sql-prettify.vue b/src/tools/sql-prettify/sql-prettify.vue
new file mode 100644
index 00000000..8e05158d
--- /dev/null
+++ b/src/tools/sql-prettify/sql-prettify.vue
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Copy
+
+
+
+
+
+
+