sql-snap
Version:
Tools for running SQL Database Tests
80 lines (79 loc) • 2.47 kB
JavaScript
;
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()));
// })