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

75 lines
2.5 KiB
JavaScript
Raw Permalink 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();