refactor(core): Delete boilerplate code across migrations (no-changelog) (#5254)
This commit is contained in:
committed by
GitHub
parent
d5c44987f4
commit
82fe6383ef
@@ -5,6 +5,9 @@ import type { QueryRunner } from 'typeorm/query-runner/QueryRunner';
|
||||
import config from '@/config';
|
||||
import { getLogger } from '@/Logger';
|
||||
import { inTest } from '@/constants';
|
||||
import type { Migration } from '@db/types';
|
||||
|
||||
const logger = getLogger();
|
||||
|
||||
const PERSONALIZATION_SURVEY_FILENAME = 'personalizationSurvey.json';
|
||||
|
||||
@@ -42,10 +45,10 @@ export function logMigrationStart(migrationName: string, disableLogging = inTest
|
||||
if (disableLogging) return;
|
||||
|
||||
if (!logFinishTimeout) {
|
||||
getLogger().warn('Migrations in progress, please do NOT stop the process.');
|
||||
logger.warn('Migrations in progress, please do NOT stop the process.');
|
||||
}
|
||||
|
||||
getLogger().debug(`Starting migration ${migrationName}`);
|
||||
logger.debug(`Starting migration ${migrationName}`);
|
||||
|
||||
clearTimeout(logFinishTimeout);
|
||||
}
|
||||
@@ -53,13 +56,33 @@ export function logMigrationStart(migrationName: string, disableLogging = inTest
|
||||
export function logMigrationEnd(migrationName: string, disableLogging = inTest): void {
|
||||
if (disableLogging) return;
|
||||
|
||||
getLogger().debug(`Finished migration ${migrationName}`);
|
||||
logger.debug(`Finished migration ${migrationName}`);
|
||||
|
||||
logFinishTimeout = setTimeout(() => {
|
||||
getLogger().warn('Migrations finished.');
|
||||
logger.warn('Migrations finished.');
|
||||
}, 100);
|
||||
}
|
||||
|
||||
export const wrapMigration = (migration: Migration) => {
|
||||
const dbType = config.getEnv('database.type');
|
||||
const dbName = config.getEnv(`database.${dbType === 'mariadb' ? 'mysqldb' : dbType}.database`);
|
||||
const tablePrefix = config.getEnv('database.tablePrefix');
|
||||
const migrationName = migration.name;
|
||||
const context = { tablePrefix, dbType, dbName, migrationName };
|
||||
|
||||
const { up, down } = migration.prototype;
|
||||
Object.assign(migration.prototype, {
|
||||
up: async (queryRunner: QueryRunner) => {
|
||||
logMigrationStart(migrationName);
|
||||
await up.call(this, { queryRunner, ...context });
|
||||
logMigrationEnd(migrationName);
|
||||
},
|
||||
down: async (queryRunner: QueryRunner) => {
|
||||
await down?.call(this, { queryRunner, ...context });
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
function batchQuery(query: string, limit: number, offset = 0): string {
|
||||
return `
|
||||
${query}
|
||||
@@ -91,8 +114,6 @@ export async function runInBatches(
|
||||
} while (batchedQueryResults.length === limit);
|
||||
}
|
||||
|
||||
export const getTablePrefix = () => config.getEnv('database.tablePrefix');
|
||||
|
||||
export const escapeQuery = (
|
||||
queryRunner: QueryRunner,
|
||||
query: string,
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
import type { IDataObject, INodeExecutionData } from 'n8n-workflow';
|
||||
|
||||
export namespace PinData {
|
||||
export type Old = { [nodeName: string]: IDataObject[] };
|
||||
|
||||
export type New = { [nodeName: string]: INodeExecutionData[] };
|
||||
|
||||
export type FetchedWorkflow = { id: number; pinData: string | Old };
|
||||
}
|
||||
|
||||
export function isObjectLiteral(maybeObject: unknown): maybeObject is { [key: string]: string } {
|
||||
return typeof maybeObject === 'object' && maybeObject !== null && !Array.isArray(maybeObject);
|
||||
}
|
||||
|
||||
export function isJsonKeyObject(item: unknown): item is {
|
||||
json: unknown;
|
||||
[otherKeys: string]: unknown;
|
||||
} {
|
||||
if (!isObjectLiteral(item)) return false;
|
||||
|
||||
return Object.keys(item).includes('json');
|
||||
}
|
||||
Reference in New Issue
Block a user