UNPKG

sql-snap

Version:

Tools for running SQL Database Tests

80 lines (79 loc) 2.47 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const ws_1 = __importDefault(require("ws")); const events_1 = require("events"); class SnapClient { constructor(url) { this.url = url; this.eventManager = new events_1.EventEmitter; } connect() { return new Promise((resolve, reject) => { this.client = new ws_1.default(this.url); this.client.on('message', this.receive.bind(this)); this.client.on('open', () => { resolve(); }); }); } send(message) { return new Promise((resolve, reject) => { const id = Date.now().toString(); message.id = id; this.client.send(JSON.stringify(message)); this.eventManager.once(`message-${id}`, (message) => { if (message.type === 'error') reject(message); else resolve(message); }); }); } query(statement) { return this.send({ type: 'query', data: statement }); } receive(raw) { const message = JSON.parse(raw); this.eventManager.emit(`message-${message.id}`, message); } } exports.SnapClient = SnapClient; // const sqlFile = // ` // SET SCHEMA 'test'; // INSERT INTO "Users" (email, password, "hashMail") VALUES ('test1@mail.com', 'password', 'mail'); // INSERT INTO "Users" (email, password, "hashMail") VALUES ('test2@mail.com', 'password', 'mail'); // SELECT * FROM "Users" // SELECT * FROM "UserInfo"; // ` // const client = new SnapClient('ws://127.0.0.1:3001'); // client.connect() // .then(() => { // client.send({ // type: 'query', // data: sqlFile // }).then((resp) => { // console.log('SQL File'); // console.log(resp); // }) // client.send({ // type: 'query', // data: `SELECT * FROM "test"."Users" LIMIT 1000` // }).then((resp) => { // console.log('SELECT'); // console.log(resp); // }) // }) // const client = new WebSocket('ws://127.0.0.1:3001'); // client.on('open', function open() { // client.send("Hello #orld"); // }); // client.on('message', (message) => { // console.log(JSON.parse(message.toString())); // })