From f29ccace2ad0e4e3d004f55671e09b5f49a09b02 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Tue, 9 May 2023 19:37:06 +0000 Subject: [PATCH] chore(postgresql): rename app folder and add icon --- .../backend/src/apps/postgres/auth/index.ts | 85 ------------------- .../apps/postgres/auth/is-still-verified.ts | 22 ----- .../apps/postgres/auth/verify-credentials.ts | 57 ------------- .../postgres/common/postgres-configuration.ts | 22 ----- .../common/set-run-time-parameters.ts | 17 ---- packages/backend/src/apps/postgres/index.ts | 17 ---- .../actions/delete/index.ts | 20 ++--- .../{postgres => postgresql}/actions/index.ts | 0 .../actions/insert/index.ts | 22 ++--- .../actions/sql-query/index.ts | 18 ++-- .../actions/update/index.ts | 26 +++--- .../src/apps/postgresql/assets/favicon.svg | 10 +++ .../backend/src/apps/postgresql/auth/index.ts | 75 ++++++++++++++++ .../apps/postgresql/auth/is-still-verified.ts | 10 +++ .../postgresql/auth/verify-credentials.ts | 23 +++++ .../apps/postgresql/common/postgres-client.ts | 20 +++++ .../common/set-run-time-parameters.ts | 16 ++++ .../apps/{postgres => postgresql}/index.d.ts | 0 packages/backend/src/apps/postgresql/index.ts | 17 ++++ 19 files changed, 214 insertions(+), 263 deletions(-) delete mode 100644 packages/backend/src/apps/postgres/auth/index.ts delete mode 100644 packages/backend/src/apps/postgres/auth/is-still-verified.ts delete mode 100644 packages/backend/src/apps/postgres/auth/verify-credentials.ts delete mode 100644 packages/backend/src/apps/postgres/common/postgres-configuration.ts delete mode 100644 packages/backend/src/apps/postgres/common/set-run-time-parameters.ts delete mode 100644 packages/backend/src/apps/postgres/index.ts rename packages/backend/src/apps/{postgres => postgresql}/actions/delete/index.ts (78%) rename packages/backend/src/apps/{postgres => postgresql}/actions/index.ts (100%) rename packages/backend/src/apps/{postgres => postgresql}/actions/insert/index.ts (79%) rename packages/backend/src/apps/{postgres => postgresql}/actions/sql-query/index.ts (82%) rename packages/backend/src/apps/{postgres => postgresql}/actions/update/index.ts (78%) create mode 100644 packages/backend/src/apps/postgresql/assets/favicon.svg create mode 100644 packages/backend/src/apps/postgresql/auth/index.ts create mode 100644 packages/backend/src/apps/postgresql/auth/is-still-verified.ts create mode 100644 packages/backend/src/apps/postgresql/auth/verify-credentials.ts create mode 100644 packages/backend/src/apps/postgresql/common/postgres-client.ts create mode 100644 packages/backend/src/apps/postgresql/common/set-run-time-parameters.ts rename packages/backend/src/apps/{postgres => postgresql}/index.d.ts (100%) create mode 100644 packages/backend/src/apps/postgresql/index.ts diff --git a/packages/backend/src/apps/postgres/auth/index.ts b/packages/backend/src/apps/postgres/auth/index.ts deleted file mode 100644 index f61f1a46..00000000 --- a/packages/backend/src/apps/postgres/auth/index.ts +++ /dev/null @@ -1,85 +0,0 @@ -import verifyCredentials from './verify-credentials'; -import isStillVerified from './is-still-verified'; - -export default { - fields: [ - { - key: 'version', - label: 'Postgres Version', - type: 'string' as const, - required: true, - readOnly: false, - value: null, - placeholder: null, - description: - 'The version of postgres database that user want to connect with.', - clickToCopy: false, - }, - { - key: 'host', - label: 'Host', - type: 'string' as const, - required: true, - readOnly: false, - value: null, - placeholder: null, - description: - 'The host of postgres database.', - clickToCopy: false, - }, - { - key: 'port', - label: 'Port', - type: 'string' as const, - required: true, - readOnly: false, - value: null, - placeholder: null, - description: - 'The port of postgres database.', - clickToCopy: false, - }, - { - key: 'database', - label: 'Database Name', - type: 'string' as const, - required: true, - readOnly: false, - value: null, - placeholder: null, - description: - 'The name of postgres database.', - clickToCopy: false, - }, - { - key: 'user', - label: 'Database User Name', - type: 'string' as const, - required: true, - readOnly: false, - value: null, - placeholder: null, - description: - 'The user who has access on postgres database.', - clickToCopy: false, - }, - { - key: 'password', - label: 'Password', - type: 'string' as const, - required: true, - readOnly: false, - value: null, - placeholder: null, - description: - 'The password of the user.', - clickToCopy: false, - }, - - ], - - verifyCredentials, - isStillVerified - }; - - diff --git a/packages/backend/src/apps/postgres/auth/is-still-verified.ts b/packages/backend/src/apps/postgres/auth/is-still-verified.ts deleted file mode 100644 index 40bb3c45..00000000 --- a/packages/backend/src/apps/postgres/auth/is-still-verified.ts +++ /dev/null @@ -1,22 +0,0 @@ -// import { IGlobalVariable } from '@automatisch/types'; -// import verifyCredentials from './verify-credentials'; -// import { Knex } from 'knex'; - -// const isStillVerified = async ($: IGlobalVariable) => { - -// await $.auth.data.pgClient.raw('SELECT 1') -// // await verifyCredentials($); -// return true; -// }; - -// export default isStillVerified; - -import { IGlobalVariable } from '@automatisch/types'; -import verifyCredentials from './verify-credentials'; - -const isStillVerified = async ($: IGlobalVariable) => { - await verifyCredentials($); - return true; -}; - -export default isStillVerified; diff --git a/packages/backend/src/apps/postgres/auth/verify-credentials.ts b/packages/backend/src/apps/postgres/auth/verify-credentials.ts deleted file mode 100644 index d4233a3b..00000000 --- a/packages/backend/src/apps/postgres/auth/verify-credentials.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { IGlobalVariable } from '@automatisch/types'; -import logger from '../../../helpers/logger'; -import setConfig from '../common/postgres-configuration'; - - -const verifyCredentials = async ($: IGlobalVariable) => { - - const pgClient = await setConfig($) - const checkConnection = await pgClient.raw('SELECT 1') - logger.debug(checkConnection) - - await $.auth.set({ - screenName: `${$.auth.data.database} DB`, - client: 'pg', - version: $.auth.data.version, - host : $.auth.data.host, - port : $.auth.data.port, - user : $.auth.data.user, - password : $.auth.data.password, - database : $.auth.data.database - }); -}; - -export default verifyCredentials; - - -/* - -mutation Login($input: LoginInput) { login(input: $input) { token user { id email __typename } __typename }} - - -mutation CreateConnection($input: CreateConnectionInput) { createConnection(input: $input) { id key verified formattedData { screenName __typename } __typename }} - -{ - "input": - { - "key": "postgres", - "formattedData": { - "version":"15", - "host":"127.0.0.1", - "port":"6500", - "database":"bbs", - "user":"test", - "password":"@Test123" - } - } -} - -mutation VerifyConnection($input: VerifyConnectionInput) { verifyConnection(input: $input) { id key verified formattedData { screenName __typename } createdAt app { key __typename } __typename }} - - -{ - "input": -{"id": "18309778-ef78-41ae-be1b-ff51781134c0"} -} - -*/ \ No newline at end of file diff --git a/packages/backend/src/apps/postgres/common/postgres-configuration.ts b/packages/backend/src/apps/postgres/common/postgres-configuration.ts deleted file mode 100644 index 28c34eb8..00000000 --- a/packages/backend/src/apps/postgres/common/postgres-configuration.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { IGlobalVariable } from '@automatisch/types'; -import knex, { Knex } from 'knex' - - -const setConfig = async ($: IGlobalVariable) : Promise> => { - const pgClient = knex({ - client: 'pg', - version: $.auth.data.version as string, - connection: { - host : $.auth.data.host as string, - port : $.auth.data.port as number, - user : $.auth.data.user as string, - password : $.auth.data.password as string, - database : $.auth.data.database as string - } - }) - - return pgClient; - -}; - -export default setConfig; diff --git a/packages/backend/src/apps/postgres/common/set-run-time-parameters.ts b/packages/backend/src/apps/postgres/common/set-run-time-parameters.ts deleted file mode 100644 index dd5738c1..00000000 --- a/packages/backend/src/apps/postgres/common/set-run-time-parameters.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { IGlobalVariable, IJSONObject } from '@automatisch/types'; -import { Knex } from 'knex' -import logger from '../../../helpers/logger'; - -const setParams = async ($: IGlobalVariable, client: Knex) : Promise> => { - - const params : any = $.step.parameters.params - let paramsObj : IJSONObject = {} - params.forEach( (ele: any) => { paramsObj[ele.configParam] = ele.value } ) - - for (const key in paramsObj) { - const res = await client.raw(`SET ${key} = '${paramsObj[key]}'`); - } - -}; - -export default setParams; diff --git a/packages/backend/src/apps/postgres/index.ts b/packages/backend/src/apps/postgres/index.ts deleted file mode 100644 index ec0c29fc..00000000 --- a/packages/backend/src/apps/postgres/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -import defineApp from '../../helpers/define-app'; -import auth from './auth'; -import actions from './actions'; - -export default defineApp({ - name: 'PostgreSQL DataBase', - key: 'postgres', - iconUrl: '{BASE_URL}/apps/thecatapi/assets/favicon.svg', - authDocUrl: 'https://automatisch.io/docs/apps/thecatapi/connection', - supportsConnections: true, - baseUrl: '', // https://thecatapi.com - apiBaseUrl: '', // https://api.thecatapi.com - primaryColor: '000000', - - auth, - actions -}); diff --git a/packages/backend/src/apps/postgres/actions/delete/index.ts b/packages/backend/src/apps/postgresql/actions/delete/index.ts similarity index 78% rename from packages/backend/src/apps/postgres/actions/delete/index.ts rename to packages/backend/src/apps/postgresql/actions/delete/index.ts index 60e1112f..ff42b4db 100644 --- a/packages/backend/src/apps/postgres/actions/delete/index.ts +++ b/packages/backend/src/apps/postgresql/actions/delete/index.ts @@ -1,6 +1,6 @@ import { IJSONObject, IJSONArray } from '@automatisch/types'; import defineAction from '../../../../helpers/define-action'; -import setConfig from '../../common/postgres-configuration'; +import setConfig from '../../common/postgres-client'; import setParams from '../../common/set-run-time-parameters'; export default defineAction({ @@ -61,9 +61,9 @@ export default defineAction({ async run($) { const pgClient = await setConfig($) - const params : any = $.step.parameters.params - if (params[0].configParam != '') - await setParams($, pgClient) + const params: any = $.step.parameters.params + if (params[0].configParam != '') + await setParams($, pgClient) const whereStatemennt = $.step.parameters.whereStatement as string const whereParts = whereStatemennt.split(",") @@ -73,13 +73,13 @@ export default defineAction({ const conditionValue = whereParts[2] const response = await pgClient(`${$.step.parameters.schema}.${$.step.parameters.table}`) - .returning('*') - .where(conditionColumn, RelationalOperator, conditionValue) - .del() as IJSONArray + .returning('*') + .where(conditionColumn, RelationalOperator, conditionValue) + .del() as IJSONArray - let deletedData : IJSONObject = {} - response.forEach( (ele: IJSONObject, i : number) => { deletedData[`record${i}`] = ele } ) + let deletedData: IJSONObject = {} + response.forEach((ele: IJSONObject, i: number) => { deletedData[`record${i}`] = ele }) - $.setActionItem({ raw: deletedData as IJSONObject }); + $.setActionItem({ raw: deletedData as IJSONObject }); }, }); diff --git a/packages/backend/src/apps/postgres/actions/index.ts b/packages/backend/src/apps/postgresql/actions/index.ts similarity index 100% rename from packages/backend/src/apps/postgres/actions/index.ts rename to packages/backend/src/apps/postgresql/actions/index.ts diff --git a/packages/backend/src/apps/postgres/actions/insert/index.ts b/packages/backend/src/apps/postgresql/actions/insert/index.ts similarity index 79% rename from packages/backend/src/apps/postgres/actions/insert/index.ts rename to packages/backend/src/apps/postgresql/actions/insert/index.ts index ed12b857..a31ecb2d 100644 --- a/packages/backend/src/apps/postgres/actions/insert/index.ts +++ b/packages/backend/src/apps/postgresql/actions/insert/index.ts @@ -1,6 +1,6 @@ import { IJSONObject } from '@automatisch/types'; import defineAction from '../../../../helpers/define-action'; -import setConfig from '../../common/postgres-configuration'; +import setConfig from '../../common/postgres-client'; import setParams from '../../common/set-run-time-parameters'; export default defineAction({ @@ -76,18 +76,18 @@ export default defineAction({ async run($) { const pgClient = await setConfig($) - const params : any = $.step.parameters.params - if (params[0].configParam != '') - await setParams($, pgClient) - - const fields : any = $.step.parameters.fields - let data : IJSONObject = {} - fields.forEach( (ele: any) => { data[ele.columnName] = ele.value } ) + const params: any = $.step.parameters.params + if (params[0].configParam != '') + await setParams($, pgClient) + + const fields: any = $.step.parameters.fields + let data: IJSONObject = {} + fields.forEach((ele: any) => { data[ele.columnName] = ele.value }) const response = await pgClient(`${$.step.parameters.schema}.${$.step.parameters.table}`) - .returning('*') - .insert(data) as IJSONObject + .returning('*') + .insert(data) as IJSONObject - $.setActionItem({ raw: response[0] as IJSONObject }); + $.setActionItem({ raw: response[0] as IJSONObject }); }, }); diff --git a/packages/backend/src/apps/postgres/actions/sql-query/index.ts b/packages/backend/src/apps/postgresql/actions/sql-query/index.ts similarity index 82% rename from packages/backend/src/apps/postgres/actions/sql-query/index.ts rename to packages/backend/src/apps/postgresql/actions/sql-query/index.ts index 6821ee0e..5de8ffbc 100644 --- a/packages/backend/src/apps/postgres/actions/sql-query/index.ts +++ b/packages/backend/src/apps/postgresql/actions/sql-query/index.ts @@ -1,6 +1,6 @@ import { IJSONObject } from '@automatisch/types'; import defineAction from '../../../../helpers/define-action'; -import setConfig from '../../common/postgres-configuration'; +import setConfig from '../../common/postgres-client'; import setParams from '../../common/set-run-time-parameters'; export default defineAction({ @@ -45,16 +45,16 @@ export default defineAction({ async run($) { const pgClient = await setConfig($) - const params : any = $.step.parameters.params - if (params[0].configParam != '') - await setParams($, pgClient) - + const params: any = $.step.parameters.params + if (params[0].configParam != '') + await setParams($, pgClient) + const queryStatemnt = $.step.parameters.queryStatement const response = await pgClient.raw(queryStatemnt); - - const res = { msg: `SQL query: " ${$.step.parameters.queryStatement} " has been executed successfully`} - - $.setActionItem({ raw: res as IJSONObject }); + + const res = { msg: `SQL query: " ${$.step.parameters.queryStatement} " has been executed successfully` } + + $.setActionItem({ raw: res as IJSONObject }); }, }); diff --git a/packages/backend/src/apps/postgres/actions/update/index.ts b/packages/backend/src/apps/postgresql/actions/update/index.ts similarity index 78% rename from packages/backend/src/apps/postgres/actions/update/index.ts rename to packages/backend/src/apps/postgresql/actions/update/index.ts index 6aab1051..ef63af0b 100644 --- a/packages/backend/src/apps/postgres/actions/update/index.ts +++ b/packages/backend/src/apps/postgresql/actions/update/index.ts @@ -1,6 +1,6 @@ import { IJSONObject, IJSONArray } from '@automatisch/types'; import defineAction from '../../../../helpers/define-action'; -import setConfig from '../../common/postgres-configuration'; +import setConfig from '../../common/postgres-client'; import setParams from '../../common/set-run-time-parameters'; export default defineAction({ @@ -84,9 +84,9 @@ export default defineAction({ async run($) { const pgClient = await setConfig($) - const params : any = $.step.parameters.params - if (params[0].configParam != '') - await setParams($, pgClient) + const params: any = $.step.parameters.params + if (params[0].configParam != '') + await setParams($, pgClient) const whereStatemennt = $.step.parameters.whereStatement as string const whereParts = whereStatemennt.split(",") @@ -95,18 +95,18 @@ export default defineAction({ const RelationalOperator = whereParts[1] const conditionValue = whereParts[2] - const fields : any = $.step.parameters.fields - let data : IJSONObject = {} - fields.forEach( (ele: any) => { data[ele.columnName] = ele.value } ) + const fields: any = $.step.parameters.fields + let data: IJSONObject = {} + fields.forEach((ele: any) => { data[ele.columnName] = ele.value }) const response = await pgClient(`${$.step.parameters.schema}.${$.step.parameters.table}`) - .returning('*') - .where(conditionColumn, RelationalOperator, conditionValue) - .update(data) as IJSONArray + .returning('*') + .where(conditionColumn, RelationalOperator, conditionValue) + .update(data) as IJSONArray - let updatedData : IJSONObject = {} - response.forEach( (ele: IJSONObject, i : number) => { updatedData[`record${i}`] = ele } ) + let updatedData: IJSONObject = {} + response.forEach((ele: IJSONObject, i: number) => { updatedData[`record${i}`] = ele }) - $.setActionItem({ raw: updatedData as IJSONObject }); + $.setActionItem({ raw: updatedData as IJSONObject }); }, }); diff --git a/packages/backend/src/apps/postgresql/assets/favicon.svg b/packages/backend/src/apps/postgresql/assets/favicon.svg new file mode 100644 index 00000000..0bdb3e3e --- /dev/null +++ b/packages/backend/src/apps/postgresql/assets/favicon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/packages/backend/src/apps/postgresql/auth/index.ts b/packages/backend/src/apps/postgresql/auth/index.ts new file mode 100644 index 00000000..71d73e71 --- /dev/null +++ b/packages/backend/src/apps/postgresql/auth/index.ts @@ -0,0 +1,75 @@ +import verifyCredentials from './verify-credentials'; +import isStillVerified from './is-still-verified'; + +export default { + fields: [ + { + key: 'version', + label: 'PostgreSQL version', + type: 'string' as const, + required: true, + readOnly: false, + value: null, + placeholder: null, + description: + 'The version of PostgreSQL database that user want to connect with.', + clickToCopy: false, + }, + { + key: 'host', + label: 'Host', + type: 'string' as const, + required: true, + readOnly: false, + value: '127.0.0.1', + placeholder: null, + clickToCopy: false, + }, + { + key: 'port', + label: 'Port', + type: 'string' as const, + required: true, + readOnly: false, + value: '5432', + placeholder: null, + clickToCopy: false, + }, + { + key: 'database', + label: 'Database Name', + type: 'string' as const, + required: true, + readOnly: false, + value: null, + placeholder: null, + clickToCopy: false, + }, + { + key: 'user', + label: 'Database username', + type: 'string' as const, + required: true, + readOnly: false, + value: null, + placeholder: null, + description: + 'The user who has access on postgres database.', + clickToCopy: false, + }, + { + key: 'password', + label: 'Password', + type: 'string' as const, + required: true, + readOnly: false, + value: null, + placeholder: null, + clickToCopy: false, + }, + + ], + + verifyCredentials, + isStillVerified +}; diff --git a/packages/backend/src/apps/postgresql/auth/is-still-verified.ts b/packages/backend/src/apps/postgresql/auth/is-still-verified.ts new file mode 100644 index 00000000..5a2fe2ae --- /dev/null +++ b/packages/backend/src/apps/postgresql/auth/is-still-verified.ts @@ -0,0 +1,10 @@ +import { IGlobalVariable } from '@automatisch/types'; +import verifyCredentials from './verify-credentials'; + +const isStillVerified = async ($: IGlobalVariable) => { + await verifyCredentials($); + + return true; +}; + +export default isStillVerified; diff --git a/packages/backend/src/apps/postgresql/auth/verify-credentials.ts b/packages/backend/src/apps/postgresql/auth/verify-credentials.ts new file mode 100644 index 00000000..935f1abd --- /dev/null +++ b/packages/backend/src/apps/postgresql/auth/verify-credentials.ts @@ -0,0 +1,23 @@ +import { IGlobalVariable } from '@automatisch/types'; +import logger from '../../../helpers/logger'; +import getClient from '../common/postgres-client'; + +const verifyCredentials = async ($: IGlobalVariable) => { + const pgClient = getClient($); + const checkConnection = await pgClient.raw('SELECT 1'); + + logger.debug(checkConnection); + + await $.auth.set({ + screenName: `${$.auth.data.user}@${$.auth.data.host}:${$.auth.data.port}/${$.auth.data.database}`, + client: 'pg', + version: $.auth.data.version, + host: $.auth.data.host, + port: Number($.auth.data.port), + user: $.auth.data.user, + password: $.auth.data.password, + database: $.auth.data.database + }); +}; + +export default verifyCredentials; diff --git a/packages/backend/src/apps/postgresql/common/postgres-client.ts b/packages/backend/src/apps/postgresql/common/postgres-client.ts new file mode 100644 index 00000000..23f4bcb1 --- /dev/null +++ b/packages/backend/src/apps/postgresql/common/postgres-client.ts @@ -0,0 +1,20 @@ +import knex, { Knex } from 'knex'; +import { IGlobalVariable } from '@automatisch/types'; + +const getClient = ($: IGlobalVariable): Knex => { + const pgClient = knex({ + client: 'pg', + version: $.auth.data.version as string, + connection: { + host: $.auth.data.host as string, + port: Number($.auth.data.port), + user: $.auth.data.user as string, + password: $.auth.data.password as string, + database: $.auth.data.database as string, + } + }) + + return pgClient; +}; + +export default getClient; diff --git a/packages/backend/src/apps/postgresql/common/set-run-time-parameters.ts b/packages/backend/src/apps/postgresql/common/set-run-time-parameters.ts new file mode 100644 index 00000000..e97d8236 --- /dev/null +++ b/packages/backend/src/apps/postgresql/common/set-run-time-parameters.ts @@ -0,0 +1,16 @@ +import { Knex } from 'knex'; +import { IGlobalVariable, IJSONObject } from '@automatisch/types'; + +const setParams = async ($: IGlobalVariable, client: Knex): Promise> => { + + const params: any = $.step.parameters.params + let paramsObj: IJSONObject = {} + params.forEach((ele: any) => { paramsObj[ele.configParam] = ele.value }) + + for (const key in paramsObj) { + const res = await client.raw(`SET ${key} = '${paramsObj[key]}'`); + } + +}; + +export default setParams; diff --git a/packages/backend/src/apps/postgres/index.d.ts b/packages/backend/src/apps/postgresql/index.d.ts similarity index 100% rename from packages/backend/src/apps/postgres/index.d.ts rename to packages/backend/src/apps/postgresql/index.d.ts diff --git a/packages/backend/src/apps/postgresql/index.ts b/packages/backend/src/apps/postgresql/index.ts new file mode 100644 index 00000000..2a27b4a0 --- /dev/null +++ b/packages/backend/src/apps/postgresql/index.ts @@ -0,0 +1,17 @@ +import defineApp from '../../helpers/define-app'; +import auth from './auth'; +import actions from './actions'; + +export default defineApp({ + name: 'PostgreSQL database', + key: 'postgresql', + iconUrl: '{BASE_URL}/apps/postgresql/assets/favicon.svg', + authDocUrl: 'https://automatisch.io/docs/apps/postgresql/connection', + supportsConnections: true, + baseUrl: '', + apiBaseUrl: '', + primaryColor: '336791', + + auth, + actions +});