61 lines
1.4 KiB
JavaScript
61 lines
1.4 KiB
JavaScript
|
|
const mysql = require('mysql2/promise')
|
||
|
|
|
||
|
|
const config = {
|
||
|
|
host: '110.42.255.239',
|
||
|
|
port: 3306,
|
||
|
|
user: 'admin',
|
||
|
|
password: 'Admin@123',
|
||
|
|
database: 'miniprogram',
|
||
|
|
waitForConnections: true,
|
||
|
|
connectionLimit: 10,
|
||
|
|
queueLimit: 0
|
||
|
|
}
|
||
|
|
|
||
|
|
const pool = mysql.createPool(config)
|
||
|
|
|
||
|
|
async function query(sql, params = []) {
|
||
|
|
const connection = await pool.getConnection()
|
||
|
|
try {
|
||
|
|
const [rows, fields] = await connection.execute(sql, params)
|
||
|
|
return rows
|
||
|
|
} finally {
|
||
|
|
connection.release()
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
async function initDatabase() {
|
||
|
|
try {
|
||
|
|
const connection = await mysql.createConnection({
|
||
|
|
host: config.host,
|
||
|
|
port: config.port,
|
||
|
|
user: config.user,
|
||
|
|
password: config.password,
|
||
|
|
multipleStatements: true
|
||
|
|
})
|
||
|
|
|
||
|
|
await connection.query(`CREATE DATABASE IF NOT EXISTS ${config.database} CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci`)
|
||
|
|
await connection.query(`USE ${config.database}`)
|
||
|
|
|
||
|
|
const fs = require('fs')
|
||
|
|
const path = require('path')
|
||
|
|
const schema = fs.readFileSync(path.join(__dirname, 'schema.sql'), 'utf8')
|
||
|
|
const statements = schema.split(';').filter(s => s.trim())
|
||
|
|
|
||
|
|
for (const statement of statements) {
|
||
|
|
await connection.query(statement)
|
||
|
|
}
|
||
|
|
|
||
|
|
await connection.end()
|
||
|
|
console.log('Database initialized successfully')
|
||
|
|
} catch (error) {
|
||
|
|
console.error('Failed to initialize database:', error)
|
||
|
|
throw error
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
module.exports = {
|
||
|
|
pool,
|
||
|
|
query,
|
||
|
|
initDatabase,
|
||
|
|
config
|
||
|
|
}
|