1.目的
・トランザクションの記述でのコールバックのネストをシンプルにする
2.code
"use script"; const fs = require('fs'); const mysql = require('mysql'); const configStr = fs.readFileSync('config.json').toString(); const config = JSON.parse(configStr); module.exports = { beginTransaction : _beginTransaction, commit : _commit, connection : _connection, delete : _delete, insert : _insert, query : _query, rollback : _rollback, selectOne : _selectOne, selectAll : _selectAll, update : _update } function _beginTransaction(connection) { return new Promise((resolve, reject) => { connection.beginTransaction((err) => { if (err) { return reject(err); } resolve(); }); }); } function _commit (connection) { return new Promise((resolve, reject) => { connection.commit((err) => { if (err) { return reject(err); } resolve(); }); }); } function _connection () { return mysql.createConnection(config.DATABASE); } function _delete (connection, sql, args) { return new Promise ((resolve, reject) => { connection.query(sql, args, (err, result) => { if(err) { return reject (err); } resolve(result); }); }); } function _insert (connection, sql, args) { return new Promise ((resolve, reject) => { connection.query(sql, args, (err, result) => { if(err) { return reject (err); } resolve(result); }); }); } function _query (connection, statement, params) { return new Promise((resolve, reject) => { connection.query(statement, params, (err, results, fields) => { if (err) { return reject(err); } resolve([results, fields]); }); }); } function _rollback (connection, err) { return new Promise((resolve, reject) => { connection.rollback(() => { if (err) { return reject(err); } resolve(); }); }); } function _selectOne (connection, sql, args) { return new Promise ((resolve, reject) => { connection.query(sql, args, (err, row) => { if(err) { return reject (err); } resolve(row[0]); }); }); } function _selectAll (connection, sql, args) { return new Promise( (resolve, reject) => { connection.query(sql, args, (err, rows) => { if(err) { return reject (err); } resolve(rows); }); }); } function _update (connection, sql, args) { return new Promise ((resolve, reject) => { connection.query(sql, args, (err, result) => { if(err) { return reject (err); } resolve(result); }); }); }