JSFiddle - React, Tailwind, and code Playground

JavaScript

"use strict";

const gitter = require('node-gitter'),
    mysql = require("mysql"),
    config = require('./source/config'),
    request = require('request-promise');

class Parser {
  constructor() {
    this.gitter = new gitter(config.token);
    this.room = config.room;
    this.mysql = mysql.createPool({
      host: config.mysql.host,
      user: config.mysql.user,
      password: config.mysql.password,
      database: config.mysql.database
    });
  }

  // Request the messages from gitter.
  requestMessagesFromGitter(limit, skip) {
    return request('https://api.gitter.im/v1/rooms/' + config.room + '/chatMessages' +
        '?access_token=' + config.token + '&limit=' + limit + '&skip=' + skip)
        .catch(error => {
          throw new Error('Error in the request: ', error)
        }).then(JSON.parse);
  }

  // Process all messages.
  getAllMessages(limit, skip) {
    const self = this;

    function getMore() {
      return self.requestMessagesFromGitter(limit, skip)
          .then(response => {
            if (response.length === limit) {
              skip += limit;
              return self.saveMessages(response).then(getMore);
            } else {
              if (response.length) {
                return self.saveMessages(response);
              }
            }
          });
    }

    return getMore();
  }

  // Save messages to database.
  saveMessages(messages) {
    let query = 'INSERT INTO messages_new (user_id, username, message, sent_at) VALUES ';

    for (let message of messages) {
      let userId = message.fromUser.id,
          username = message.fromUser.username,
          text = message.text.replace(/["\\]/g, '|'),
          date = message.sent;

      query += '("' + userId + '", "' + username + '", "' + text + '", "' + date + '"), ';
    }
    query = query.substr(0, query.length - 2);

    return new Promise((resolve, reject) => {
      return this.mysql.getConnection((error, connection) => {
        connection.query(query,...