forked from noxious/server
48 lines
1.5 KiB
JavaScript
48 lines
1.5 KiB
JavaScript
const fs = require('fs/promises');
|
|
const path = require('path');
|
|
|
|
function toPascalCase(str) {
|
|
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
}
|
|
|
|
async function transformEntities() {
|
|
const entitiesDir = './src/entities';
|
|
const baseDir = './src/entities/base';
|
|
|
|
// Create base directory if it doesn't exist
|
|
await fs.mkdir(baseDir, { recursive: true });
|
|
|
|
// Get all .ts files in entities directory
|
|
const files = await fs.readdir(entitiesDir);
|
|
const tsFiles = files.filter(file => file.endsWith('.ts') && file !== 'index.ts');
|
|
|
|
for (const file of tsFiles) {
|
|
const filePath = path.join(entitiesDir, file);
|
|
let content = await fs.readFile(filePath, 'utf-8');
|
|
|
|
// Get proper Pascal Case class name
|
|
const className = toPascalCase(path.basename(file, '.ts'));
|
|
|
|
// Create base class content
|
|
let baseContent = content
|
|
.replace(/@Entity\(\)/, '') // Remove @Entity decorator
|
|
.replace(/export class (\w+)/, `export class Base${className}`); // Add Base prefix with proper Pascal Case
|
|
|
|
// Create derived class content
|
|
const derivedContent = `import { Entity } from '@mikro-orm/core'
|
|
import { Base${className} } from '#entities/base/${file}'
|
|
|
|
@Entity()
|
|
export class ${className} extends Base${className} {}
|
|
`;
|
|
|
|
// Write base class
|
|
await fs.writeFile(path.join(baseDir, file), baseContent);
|
|
|
|
// Write derived class
|
|
await fs.writeFile(filePath, derivedContent);
|
|
}
|
|
}
|
|
|
|
transformEntities().catch(console.error);
|