79 lines
2.9 KiB
JavaScript
79 lines
2.9 KiB
JavaScript
const mysql = require('mysql2/promise');
|
|
require('dotenv').config();
|
|
|
|
async function init() {
|
|
const connection = await mysql.createConnection({
|
|
host: process.env.DB_HOST,
|
|
user: process.env.DB_USER,
|
|
password: process.env.DB_PASSWORD,
|
|
port: process.env.DB_PORT || 3307 // Using 3307 as per .env
|
|
});
|
|
|
|
try {
|
|
const dbName = 'smart_ims_license_db';
|
|
await connection.query(`CREATE DATABASE IF NOT EXISTS ${dbName}`);
|
|
await connection.query(`USE ${dbName}`);
|
|
|
|
// 1. issued_licenses
|
|
const createTableSql = `
|
|
CREATE TABLE IF NOT EXISTS issued_licenses (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
module_code VARCHAR(50) NOT NULL,
|
|
license_key TEXT NOT NULL,
|
|
license_type VARCHAR(20) NOT NULL,
|
|
subscriber_id VARCHAR(100) NOT NULL,
|
|
status VARCHAR(20) DEFAULT 'ISSUED',
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
`;
|
|
await connection.query(createTableSql);
|
|
|
|
try {
|
|
await connection.query(`
|
|
INSERT IGNORE INTO smart_ims_license_db.issued_licenses
|
|
(module_code, license_key, license_type, subscriber_id, status, created_at)
|
|
SELECT module_code, license_key, license_type, subscriber_id, status, created_at
|
|
FROM sokuree_platform_dev.issued_licenses;
|
|
`);
|
|
console.log('✅ Migrated issued_licenses');
|
|
} catch (e) {
|
|
console.log('Skip issued_licenses migration:', e.message);
|
|
}
|
|
|
|
// 3. users table
|
|
const createUsersSql = `
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
login_id VARCHAR(50) UNIQUE NOT NULL,
|
|
password VARCHAR(255) NOT NULL,
|
|
name VARCHAR(100),
|
|
role VARCHAR(20) DEFAULT 'admin',
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
`;
|
|
await connection.query(createUsersSql);
|
|
|
|
// Seed Initial Admin
|
|
const bcrypt = require('bcryptjs');
|
|
const adminId = 'admin';
|
|
const adminPw = 'admin1234';
|
|
const [existing] = await connection.query('SELECT id FROM users WHERE login_id = ?', [adminId]);
|
|
|
|
if (existing.length === 0) {
|
|
const hashedPw = await bcrypt.hash(adminPw, 10);
|
|
await connection.query(
|
|
'INSERT INTO users (login_id, password, name, role) VALUES (?, ?, ?, ?)',
|
|
[adminId, hashedPw, 'Administrator', 'admin']
|
|
);
|
|
console.log('✅ Created initial admin account');
|
|
}
|
|
|
|
} catch (err) {
|
|
console.error('FAILED:', err);
|
|
} finally {
|
|
await connection.end();
|
|
}
|
|
}
|
|
|
|
init();
|