mysql-sender.js 873 Bytes
const client = require('./mysql-client');
const log = require('debug')('mysql');

class MySqlSender {
    constructor(table, duration = 2000) {
        this.table = table;
        this.batchMessages = [];

        setInterval(() => {
            this._send();
        }, duration);
    }

    addMessage(msg) {
        if (msg) {
            this.batchMessages.push(msg);
        }
    }

    async _send() {
        const len = this.batchMessages.length;

        if (len < 1) {
            log('batchMessage is empty');
            return;
        }

        const bulk = this.batchMessages.splice(0, len);

        for (let i of bulk) {
            log('insert %0', i);
            await client(this.table).insert(i).catch((err) => {
                console.log(`data [${JSON.stringify(i)}] error`, err);
            });
        }

    }
}

module.exports = MySqlSender;