Hello,
I am trying to create a migration generator class for MikroORM, and when following the docs, I get the following error:
Cannot assign an abstract constructor type to a non-abstract constructor type.
40 generator: MigrationGenerator,
~~~~~~~~~
Here is my generator class:
import { TSMigrationGenerator } from '@mikro-orm/migrations';
import { IMigrationGenerator } from '@mikro-orm/core';
export class MigrationGenerator extends TSMigrationGenerator implements IMigrationGenerator {
public override generateMigrationFile(className: string, diff: { up: string[]; down: string[] }): string {
let ret = `import { Migration } from '@mikro-orm/migrations';\n\n`;
ret += `export class ${className} extends Migration {\n`;
ret += ` public override async up(): Promise<void> {\n`;
diff.up.forEach(sql => ret += this.createStatement(sql, 8));
ret += ` }\n\n`;
if (diff.down.length > 0) {
ret += ` public override async down(): Promise<void> {\n`;
diff.down.forEach(sql => ret += this.createStatement(sql, 8));
ret += ` }\n`;
}
ret += `}\n`;
return ret;
}
}
Here is how I give it to MikroORM:
await MikroORM.init<MySqlDriver>({
metadataProvider: TsMorphMetadataProvider,
entities: ['./dist/structures/entities'],
entitiesTs: ['./src/structures/entities'],
logger: (message: string) => Logger.info(message),
debug: true,
type: 'mysql',
timezone: '+00:00',
dbName: process.env.DBNAME,
user: process.env.DBUSER,
host: process.env.DBHOST,
password: process.env.DBPASSWORD,
port: Number(process.env.DBPORT),
driverOptions: {
charset: 'utf8mb4',
collate: 'utf8mb4_general_ci',
},
migrations: {
generator: MigrationGenerator, // <----- Here
path: './dist/migrations',
pathTs: './src/migrations',
},
});
And here is the link to the docs: https://mikro-orm.io/docs/migrations#using-custom-migrationgenerator
I am not sure what I did incorrectly, please help.
Thank you