import mysql, {MysqlError, PoolConnection} from 'mysql' import {MysqlConnectOptionType, PojoType} from '../../../../type/type' import { exception } from '../../../../util' export default class DataSource{ private connectionOption: MysqlConnectOptionType private static pool: any constructor(option: MysqlConnectOptionType = { host: 'rm-2zec525s5ubhd120k4o.mysql.rds.aliyuncs.com', user: 'zhujin', password: 'HrGGSnsWK8jyG5I4YYCy', database: 'demo' }){ this.connectionOption = option this.initDataPool() } private initDataPool(): void{ try{ DataSource.pool || (DataSource.pool = mysql.createPool(this.connectionOption)) }catch(err){ exception((err).message) } } public async getConnection(): Promise{ return new Promise((resolve: Function, reject: Function) => { if(DataSource.pool){ DataSource.pool.getConnection((err: MysqlError, conn: PoolConnection) => { if(err){ const {message} = err reject(message) }else{ (conn).counter = 1 resolve(conn) } }) }else{ reject('数据源未初始化!') } }) } }