Files
uldp-degree-mangement-system/scripts/make-migration.js
r2xrzh9q2z-lab d1b931d547 first commit
2026-02-02 11:07:09 +07:00

87 lines
2.5 KiB
JavaScript

const fs = require('fs');
const path = require('path');
/**
* Tạo migration file mới với format giống Laravel
* Format: YYYY_MM_DD_HHMMSS_migration_name.js
*/
function makeMigration(migrationName) {
if (!migrationName) {
console.error('Error: Migration name is required');
console.log('\nUsage: node scripts/make-migration.js <migration-name>');
console.log('Example: node scripts/make-migration.js create_users_table');
process.exit(1);
}
// Tạo timestamp theo format Laravel: YYYY_MM_DD_HHMMSS
const now = new Date();
const year = now.getFullYear();
const month = String(now.getMonth() + 1).padStart(2, '0');
const day = String(now.getDate()).padStart(2, '0');
const hours = String(now.getHours()).padStart(2, '0');
const minutes = String(now.getMinutes()).padStart(2, '0');
const seconds = String(now.getSeconds()).padStart(2, '0');
const timestamp = `${year}_${month}_${day}_${hours}${minutes}${seconds}`;
const fileName = `${timestamp}_${migrationName}.js`;
const filePath = path.join(__dirname, fileName);
// Template migration mẫu
const template = `require('dotenv').config();
const connectDB = require('../config/database');
/**
* Migration: ${migrationName}
* Created: ${now.toLocaleString('vi-VN')}
*/
async function migrate() {
try {
// Kết nối database
await connectDB();
console.log('Starting migration: ${migrationName}...');
// TODO: Thêm code migration của bạn ở đây
console.log('Migration ${migrationName} completed successfully!');
const mongoose = require('mongoose');
await mongoose.disconnect();
process.exit(0);
} catch (error) {
console.error('Migration error:', error);
process.exit(1);
}
}
// Chạy migration nếu được gọi trực tiếp
if (require.main === module) {
migrate();
}
module.exports = { migrate };
`;
// Kiểm tra file đã tồn tại chưa
if (fs.existsSync(filePath)) {
console.error(`Error: Migration file already exists: ${fileName}`);
process.exit(1);
}
// Tạo file migration
try {
fs.writeFileSync(filePath, template, 'utf8');
console.log(`Migration created successfully: ${fileName}`);
console.log(`Path: ${filePath}`);
} catch (error) {
console.error('Error creating migration file:', error.message);
process.exit(1);
}
}
// Lấy migration name từ command line arguments
const migrationName = process.argv[2];
// Chạy hàm tạo migration
makeMigration(migrationName);