Files
services/config/database.js
T
董海洋 ff40282dc1 new api
2026-05-26 09:18:48 +08:00

66 lines
1.7 KiB
JavaScript

const mysql = require('mysql2/promise')
require('dotenv').config()
const config = {
host: process.env.DB_HOST || '110.42.255.239',
port: parseInt(process.env.DB_PORT || '3306'),
user: process.env.DB_USER || 'admin',
password: process.env.DB_PASSWORD || 'Admin@123',
database: process.env.DB_NAME || 'miniprogram',
waitForConnections: true,
connectionLimit: 10,
queueLimit: 0
}
/*
# 登录服务器,找到 Koa 进程
ssh ubuntu@110.42.255.239
pm2 restart weixin
*/
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
}