From d1f95f5b34a4570f1033a5289f0bd009d1aefb0c Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Sun, 24 Jul 2022 14:37:27 +0200 Subject: [PATCH] feat(new-tool): added an SQL prettifier and formatter --- package-lock.json | 26 +++- package.json | 1 + src/tools/index.ts | 3 +- src/tools/sql-prettify/index.ts | 26 ++++ .../sql-prettify/sql-prettify.service.test.ts | 6 + .../sql-prettify/sql-prettify.service.ts | 0 src/tools/sql-prettify/sql-prettify.vue | 112 ++++++++++++++++++ 7 files changed, 169 insertions(+), 5 deletions(-) create mode 100644 src/tools/sql-prettify/index.ts create mode 100644 src/tools/sql-prettify/sql-prettify.service.test.ts create mode 100644 src/tools/sql-prettify/sql-prettify.service.ts create mode 100644 src/tools/sql-prettify/sql-prettify.vue 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 @@ + + + + +