diff --git a/server/managers/MigrationManager.js b/server/managers/MigrationManager.js index 8f08cf8a..53db461b 100644 --- a/server/managers/MigrationManager.js +++ b/server/managers/MigrationManager.js @@ -9,6 +9,10 @@ const Logger = require('../Logger') class MigrationManager { static MIGRATIONS_META_TABLE = 'migrationsMeta' + /** + * @param {import('../Database').sequelize} sequelize + * @param {string} [configPath] + */ constructor(sequelize, configPath = global.configPath) { if (!sequelize || !(sequelize instanceof Sequelize)) throw new Error('Sequelize instance is required for MigrationManager.') this.sequelize = sequelize @@ -23,6 +27,11 @@ class MigrationManager { this.umzug = null } + /** + * Init version vars and copy migration files to config dir if necessary + * + * @param {string} serverVersion + */ async init(serverVersion) { if (!(await fs.pathExists(this.configPath))) throw new Error(`Config path does not exist: ${this.configPath}`) @@ -212,6 +221,13 @@ class MigrationManager { ) } + /** + * + * @param {{ name: string }[]} migrations + * @param {string[]} executedMigrations - names of executed migrations + * @param {string} direction - 'up' or 'down' + * @returns {string[]} - names of migrations to run + */ findMigrationsToRun(migrations, executedMigrations, direction) { const migrationsToRun = migrations .filter((migration) => { diff --git a/test/server/migrations/v0.0.1-migration_example.js b/test/server/migrations/v0.0.1-migration_example.js index a000de07..5af66fc4 100644 --- a/test/server/migrations/v0.0.1-migration_example.js +++ b/test/server/migrations/v0.0.1-migration_example.js @@ -1,10 +1,18 @@ const { DataTypes } = require('sequelize') +/** + * @typedef MigrationContext + * @property {import('sequelize').QueryInterface} queryInterface - a suquelize QueryInterface object. + * @property {import('../Logger')} logger - a Logger object. + * + * @typedef MigrationOptions + * @property {MigrationContext} context - an object containing the migration context. + */ + /** * This is an example of an upward migration script. * - * @param {import { QueryInterface } from "sequelize";} options.context.queryInterface - a suquelize QueryInterface object. - * @param {import { Logger } from "../../../server/Logger";} options.context.logger - a Logger object. + * @param {MigrationOptions} options - an object containing the migration context. * @returns {Promise} - A promise that resolves when the migration is complete. */ async function up({ context: { queryInterface, logger } }) { @@ -28,8 +36,7 @@ async function up({ context: { queryInterface, logger } }) { /** * This is an example of a downward migration script. * - * @param {import { QueryInterface } from "sequelize";} options.context.queryInterface - a suquelize QueryInterface object. - * @param {import { Logger } from "../../../server/Logger";} options.context.logger - a Logger object. + * @param {MigrationOptions} options - an object containing the migration context. * @returns {Promise} - A promise that resolves when the migration is complete. */ async function down({ context: { queryInterface, logger } }) {