Files
smanab/e-proposal-komite/fix-category.js

75 lines
2.5 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Script to fix category column in proposals table
import mysql from 'mysql2/promise';
import dotenv from 'dotenv';
import path from 'path';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
// Load environment variables
const envPath = path.join(__dirname, 'server', '.env');
dotenv.config({ path: envPath });
console.log('🔧 Category Column Fix Script');
console.log('==============================');
console.log('Database:', process.env.DB_NAME);
console.log('Host:', process.env.DB_HOST);
async function fixCategoryColumn() {
let connection;
try {
connection = await mysql.createConnection({
host: process.env.DB_HOST || 'localhost',
port: process.env.DB_PORT || 3306,
user: process.env.DB_USER || 'root',
password: process.env.DB_PASSWORD || '',
database: process.env.DB_NAME || 'db_proposalkomite'
});
console.log('\n✅ Connected to database');
// Check current column type
const [columns] = await connection.query(
`SHOW COLUMNS FROM proposals WHERE Field = 'category'`
);
if (columns.length > 0) {
console.log('Current category column type:', columns[0].Type);
if (columns[0].Type.toLowerCase().includes('enum')) {
console.log('\n⚠ Category column is ENUM, converting to VARCHAR(100)...');
await connection.query(`
ALTER TABLE proposals
MODIFY COLUMN category VARCHAR(100) DEFAULT 'AKADEMIK'
`);
console.log('✅ Category column converted to VARCHAR(100) successfully!');
} else {
console.log('✅ Category column is already VARCHAR, no changes needed');
}
} else {
console.log('❌ Category column not found in proposals table');
}
// Verify the change
const [verifyColumns] = await connection.query(
`SHOW COLUMNS FROM proposals WHERE Field = 'category'`
);
console.log('\nFinal category column type:', verifyColumns[0]?.Type);
} catch (error) {
console.error('❌ Error:', error.message);
if (error.code === 'ECONNREFUSED') {
console.error(' Make sure MySQL server is running');
}
} finally {
if (connection) {
await connection.end();
}
}
}
fixCategoryColumn();