Skip to content

Commit

Permalink
Update migrations jsdocs
Browse files Browse the repository at this point in the history
  • Loading branch information
advplyr committed Sep 10, 2024
1 parent 6fb1202 commit 7cbf9de
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 4 deletions.
16 changes: 16 additions & 0 deletions server/managers/MigrationManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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}`)

Expand Down Expand Up @@ -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) => {
Expand Down
15 changes: 11 additions & 4 deletions test/server/migrations/v0.0.1-migration_example.js
Original file line number Diff line number Diff line change
@@ -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<void>} - A promise that resolves when the migration is complete.
*/
async function up({ context: { queryInterface, logger } }) {
Expand All @@ -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<void>} - A promise that resolves when the migration is complete.
*/
async function down({ context: { queryInterface, logger } }) {
Expand Down

0 comments on commit 7cbf9de

Please sign in to comment.