diff --git a/package.json b/package.json index f6ef12645..b9299fc40 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "build:lib": "yarn build:sqltree && yarn build:tools && yarn build:filterparser && yarn build:datalib", "build:app": "yarn plugins:copydist && cd app && yarn install && yarn build", "build:api": "yarn workspace dbgate-api build", + "build:api:doc": "yarn workspace dbgate-api build:doc", "build:web": "yarn workspace dbgate-web build", "build:plugins:frontend": "workspaces-run --only=\"dbgate-plugin-*\" -- yarn build:frontend", "build:plugins:backend": "workspaces-run --only=\"dbgate-plugin-*\" -- yarn build:backend", diff --git a/packages/api/src/shell/deployDb.js b/packages/api/src/shell/deployDb.js index 6d47d179d..331613240 100644 --- a/packages/api/src/shell/deployDb.js +++ b/packages/api/src/shell/deployDb.js @@ -6,6 +6,21 @@ const requireEngineDriver = require('../utility/requireEngineDriver'); const loadModelFolder = require('../utility/loadModelFolder'); const crypto = require('crypto'); +/** + * Deploys database model stored in modelFolder (table as yamls) to database + * @param {object} options + * @param {connectionType} options.connection - connection object + * @param {object} options.systemConnection - system connection (result of driver.connect). If not provided, new connection will be created + * @param {object} options.driver - driver object. If not provided, it will be loaded from connection + * @param {object} options.analysedStructure - analysed structure of the database. If not provided, it will be loaded + * @param {string} options.modelFolder - folder with model files (YAML files for tables, SQL files for views, procedures, ...) + * @param {import('dbgate-tools').DatabaseModelFile[]} options.loadedDbModel - loaded database model - collection of yaml and SQL files loaded into array + * @param {function[]} options.modelTransforms - array of functions for transforming model + * @param {object} options.dbdiffOptionsExtra - extra options for dbdiff + * @param {string} options.ignoreNameRegex - regex for ignoring objects by name + * @param {string} options.targetSchema - target schema for deployment + * @param {number} options.maxMissingTablesRatio - maximum ratio of missing tables in database. Safety check, if missing ratio is highe, deploy is stopped (preventing accidental drop of all tables) + */ async function deployDb({ connection, systemConnection, diff --git a/packages/api/src/shell/generateDeploySql.js b/packages/api/src/shell/generateDeploySql.js index eb9dde32e..0edc0dc3f 100644 --- a/packages/api/src/shell/generateDeploySql.js +++ b/packages/api/src/shell/generateDeploySql.js @@ -15,6 +15,21 @@ const importDbModel = require('../utility/importDbModel'); const requireEngineDriver = require('../utility/requireEngineDriver'); const connectUtility = require('../utility/connectUtility'); +/** + * Generates query for deploying model into database + * @param {object} options + * @param {connectionType} options.connection - connection object + * @param {object} options.systemConnection - system connection (result of driver.connect). If not provided, new connection will be created + * @param {object} options.driver - driver object. If not provided, it will be loaded from connection + * @param {object} options.analysedStructure - analysed structure of the database. If not provided, it will be loaded + * @param {string} options.modelFolder - folder with model files (YAML files for tables, SQL files for views, procedures, ...) + * @param {import('dbgate-tools').DatabaseModelFile[]} options.loadedDbModel - loaded database model - collection of yaml and SQL files loaded into array + * @param {function[]} options.modelTransforms - array of functions for transforming model + * @param {object} options.dbdiffOptionsExtra - extra options for dbdiff + * @param {string} options.ignoreNameRegex - regex for ignoring objects by name + * @param {string} options.targetSchema - target schema for deployment + * @param {number} options.maxMissingTablesRatio - maximum ratio of missing tables in database. Safety check, if missing ratio is highe, deploy is stopped (preventing accidental drop of all tables) + */ async function generateDeploySql({ connection, systemConnection = undefined,