| 146 | } |
| 147 | |
| 148 | private async generate( |
| 149 | fs: { writeFile(path: string, data: string, options?: Record<string, any>): Promise<void> }, |
| 150 | className: string, |
| 151 | ): Promise<string> { |
| 152 | const fileName = `${this.#options.fileName!(className)}.${this.#options.emit}`; |
| 153 | const filePath = `${this.#absolutePath}/${fileName}`; |
| 154 | let ret = ''; |
| 155 | |
| 156 | if (this.#options.emit === 'ts') { |
| 157 | ret += `import type { EntityManager } from '@mikro-orm/core';\n`; |
| 158 | ret += `import { Seeder } from '@mikro-orm/seeder';\n\n`; |
| 159 | ret += `export class ${className} extends Seeder {\n\n`; |
| 160 | ret += ` async run(em: EntityManager): Promise<void> {}\n\n`; |
| 161 | ret += `}\n`; |
| 162 | } else { |
| 163 | ret += `'use strict';\n`; |
| 164 | ret += `Object.defineProperty(exports, '__esModule', { value: true });\n`; |
| 165 | ret += `const { Seeder } = require('@mikro-orm/seeder');\n\n`; |
| 166 | ret += `class ${className} extends Seeder {\n\n`; |
| 167 | ret += ` async run(em: EntityManager): Promise<void> {}\n\n`; |
| 168 | ret += `}\n`; |
| 169 | ret += `exports.${className} = ${className};\n`; |
| 170 | } |
| 171 | |
| 172 | await fs.writeFile(filePath, ret, { flush: true }); |
| 173 | |
| 174 | return filePath; |
| 175 | } |
| 176 | } |