From 5389878801f064fa440441f23b4a5631703da72d Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Sat, 26 Jun 2021 23:09:46 +0100 Subject: [PATCH] Moving definitions to central location and adding a few more definitions. --- packages/server/src/constants/definitions.ts | 28 ------- packages/server/src/definitions/common.ts | 78 +++++++++++++++++++ .../datasource.ts} | 0 packages/server/src/integrations/airtable.ts | 2 +- packages/server/src/integrations/arangodb.ts | 2 +- packages/server/src/integrations/base/sql.ts | 2 +- packages/server/src/integrations/couchdb.ts | 2 +- packages/server/src/integrations/dynamodb.ts | 2 +- .../server/src/integrations/elasticsearch.ts | 2 +- .../src/integrations/microsoftSqlServer.ts | 2 +- packages/server/src/integrations/mongodb.ts | 2 +- packages/server/src/integrations/mysql.ts | 14 ++-- packages/server/src/integrations/postgres.ts | 4 +- packages/server/src/integrations/rest.ts | 2 +- packages/server/src/integrations/s3.ts | 2 +- packages/server/src/integrations/utils.ts | 2 +- 16 files changed, 100 insertions(+), 46 deletions(-) delete mode 100644 packages/server/src/constants/definitions.ts create mode 100644 packages/server/src/definitions/common.ts rename packages/server/src/{integrations/base/definitions.ts => definitions/datasource.ts} (100%) diff --git a/packages/server/src/constants/definitions.ts b/packages/server/src/constants/definitions.ts deleted file mode 100644 index 685c2a9824..0000000000 --- a/packages/server/src/constants/definitions.ts +++ /dev/null @@ -1,28 +0,0 @@ -export interface Table { - _id: string - _rev?: string - type?: string - views?: {} - name?: string - primary?: string[] - schema: { - [key: string]: { - // TODO: replace with field types enum when done - type: string - fieldName?: string - name: string - constraints?: { - type?: string - email?: boolean - inclusion?: string[] - length?: { - minimum?: string | number - maximum?: string | number - } - presence?: boolean - } - } - } - primaryDisplay?: string - sourceId?: string -} diff --git a/packages/server/src/definitions/common.ts b/packages/server/src/definitions/common.ts new file mode 100644 index 0000000000..4d2b0edc00 --- /dev/null +++ b/packages/server/src/definitions/common.ts @@ -0,0 +1,78 @@ +interface Base { + _id?: string, + _rev?: string, +} + +export interface TableSchema { + [key: string]: { + // TODO: replace with field types enum when done + type: string, + fieldName?: string, + name: string, + constraints?: { + type?: string, + email?: boolean, + inclusion?: string[], + length?: { + minimum?: string | number, + maximum?: string | number, + }, + presence?: boolean, + }, + }, +} + +export interface Table extends Base { + type?: string, + views?: {}, + name?: string, + primary?: string[], + schema: TableSchema, + primaryDisplay?: string, + sourceId?: string, +} + +export interface Row extends Base { + type?: string, + tableId: string, + [key: string]: any, +} + +interface JsonSchemaField { + properties: { + [key: string]: { + type: string, + title: string, + customType?: string, + }, + }, + required?: string[], +} + +export interface AutomationStep { + description: string, + event?: string, + icon: string, + id: string, + inputs: { + [key: string]: any, + }, + name: string, + schema: { + inputs: JsonSchemaField, + outputs: JsonSchemaField, + }, + stepId: string, + tagline: string, + type: string, +} + +export interface Automation extends Base { + name: string, + type: string, + appId?: string, + definition: { + steps: AutomationStep[], + trigger?: AutomationStep, + }, +} diff --git a/packages/server/src/integrations/base/definitions.ts b/packages/server/src/definitions/datasource.ts similarity index 100% rename from packages/server/src/integrations/base/definitions.ts rename to packages/server/src/definitions/datasource.ts diff --git a/packages/server/src/integrations/airtable.ts b/packages/server/src/integrations/airtable.ts index a99dfc7c72..7a80f51bd0 100644 --- a/packages/server/src/integrations/airtable.ts +++ b/packages/server/src/integrations/airtable.ts @@ -2,7 +2,7 @@ import { Integration, DatasourceFieldTypes, QueryTypes, -} from "./base/definitions" +} from "../definitions/datasource" module AirtableModule { const Airtable = require("airtable") diff --git a/packages/server/src/integrations/arangodb.ts b/packages/server/src/integrations/arangodb.ts index 7741b8be94..c5eac32892 100644 --- a/packages/server/src/integrations/arangodb.ts +++ b/packages/server/src/integrations/arangodb.ts @@ -2,7 +2,7 @@ import { Integration, DatasourceFieldTypes, QueryTypes, -} from "./base/definitions" +} from "../definitions/datasource" module ArangoModule { const { Database, aql } = require("arangojs") diff --git a/packages/server/src/integrations/base/sql.ts b/packages/server/src/integrations/base/sql.ts index 60dfa84862..a04e258415 100644 --- a/packages/server/src/integrations/base/sql.ts +++ b/packages/server/src/integrations/base/sql.ts @@ -7,7 +7,7 @@ import { SortDirection, Operation, RelationshipsJson, -} from "./definitions" +} from "../../definitions/datasource" type KnexQuery = Knex.QueryBuilder | Knex diff --git a/packages/server/src/integrations/couchdb.ts b/packages/server/src/integrations/couchdb.ts index a813cf2385..983e6cdac2 100644 --- a/packages/server/src/integrations/couchdb.ts +++ b/packages/server/src/integrations/couchdb.ts @@ -2,7 +2,7 @@ import { Integration, DatasourceFieldTypes, QueryTypes, -} from "./base/definitions" +} from "../definitions/datasource" module CouchDBModule { const PouchDB = require("pouchdb") diff --git a/packages/server/src/integrations/dynamodb.ts b/packages/server/src/integrations/dynamodb.ts index 0baf09a866..6b99ba04cc 100644 --- a/packages/server/src/integrations/dynamodb.ts +++ b/packages/server/src/integrations/dynamodb.ts @@ -2,7 +2,7 @@ import { Integration, DatasourceFieldTypes, QueryTypes, -} from "./base/definitions" +} from "../definitions/datasource" module DynamoModule { const AWS = require("aws-sdk") diff --git a/packages/server/src/integrations/elasticsearch.ts b/packages/server/src/integrations/elasticsearch.ts index 2562ca0dcd..147858c8dd 100644 --- a/packages/server/src/integrations/elasticsearch.ts +++ b/packages/server/src/integrations/elasticsearch.ts @@ -2,7 +2,7 @@ import { Integration, DatasourceFieldTypes, QueryTypes, -} from "./base/definitions" +} from "../definitions/datasource" module ElasticsearchModule { const { Client } = require("@elastic/elasticsearch") diff --git a/packages/server/src/integrations/microsoftSqlServer.ts b/packages/server/src/integrations/microsoftSqlServer.ts index ff428eacff..f5a9d73b09 100644 --- a/packages/server/src/integrations/microsoftSqlServer.ts +++ b/packages/server/src/integrations/microsoftSqlServer.ts @@ -4,7 +4,7 @@ import { QueryTypes, QueryJson, SqlQuery, -} from "./base/definitions" +} from "../definitions/datasource" import { getSqlQuery } from "./utils" module MSSQLModule { diff --git a/packages/server/src/integrations/mongodb.ts b/packages/server/src/integrations/mongodb.ts index b248be84c4..af7b49153d 100644 --- a/packages/server/src/integrations/mongodb.ts +++ b/packages/server/src/integrations/mongodb.ts @@ -2,7 +2,7 @@ import { Integration, DatasourceFieldTypes, QueryTypes, -} from "./base/definitions" +} from "../definitions/datasource" module MongoDBModule { const { MongoClient } = require("mongodb") diff --git a/packages/server/src/integrations/mysql.ts b/packages/server/src/integrations/mysql.ts index 6940f1e3c6..dec95433ac 100644 --- a/packages/server/src/integrations/mysql.ts +++ b/packages/server/src/integrations/mysql.ts @@ -5,7 +5,11 @@ import { Operation, QueryJson, SqlQuery, -} from "./base/definitions" +} from "../definitions/datasource" +import { + Table, + TableSchema, +} from "../definitions/common" import { getSqlQuery } from "./utils" module MySQLModule { @@ -139,7 +143,7 @@ module MySQLModule { } async buildSchema(datasourceId: string) { - const tables: any = {} + const tables: { [key: string]: Table } = {} const database = this.config.database this.client.connect() @@ -154,7 +158,7 @@ module MySQLModule { ) for (let tableName of tableNames) { const primaryKeys = [] - const schema: any = {} + const schema: TableSchema = {} const descResp = await internalQuery( this.client, { sql: `DESCRIBE ${tableName};` }, @@ -166,7 +170,7 @@ module MySQLModule { primaryKeys.push(columnName) } const constraints = { - required: column.Null !== "YES", + presence: column.Null !== "YES", } schema[columnName] = { name: columnName, @@ -212,7 +216,7 @@ module MySQLModule { } async getReturningRow(json: QueryJson) { - if (!json.extra.idFilter) { + if (!json.extra || !json.extra.idFilter) { return {} } const input = this._query({ diff --git a/packages/server/src/integrations/postgres.ts b/packages/server/src/integrations/postgres.ts index f5290e555e..cb15937af2 100644 --- a/packages/server/src/integrations/postgres.ts +++ b/packages/server/src/integrations/postgres.ts @@ -4,8 +4,8 @@ import { QueryTypes, QueryJson, SqlQuery, -} from "./base/definitions" -import { Table } from "../constants/definitions" +} from "../definitions/datasource" +import { Table } from "../definitions/common" import { getSqlQuery } from "./utils" module PostgresModule { diff --git a/packages/server/src/integrations/rest.ts b/packages/server/src/integrations/rest.ts index 8b6d0e70da..c55e991980 100644 --- a/packages/server/src/integrations/rest.ts +++ b/packages/server/src/integrations/rest.ts @@ -2,7 +2,7 @@ import { Integration, DatasourceFieldTypes, QueryTypes, -} from "./base/definitions" +} from "../definitions/datasource" module RestModule { const fetch = require("node-fetch") diff --git a/packages/server/src/integrations/s3.ts b/packages/server/src/integrations/s3.ts index 58d58be443..691f3a05c0 100644 --- a/packages/server/src/integrations/s3.ts +++ b/packages/server/src/integrations/s3.ts @@ -1,4 +1,4 @@ -import { Integration, QueryTypes } from "./base/definitions" +import { Integration, QueryTypes } from "../definitions/datasource" module S3Module { const AWS = require("aws-sdk") diff --git a/packages/server/src/integrations/utils.ts b/packages/server/src/integrations/utils.ts index 968d9da58e..581efdc605 100644 --- a/packages/server/src/integrations/utils.ts +++ b/packages/server/src/integrations/utils.ts @@ -1,4 +1,4 @@ -import { SqlQuery } from "./base/definitions" +import { SqlQuery } from "../definitions/datasource" const { DocumentTypes, SEPARATOR } = require("../db/utils") const { FieldTypes } = require("../constants")