UNPKG

@tdengine/websocket

Version:

The websocket Node.js connector for TDengine. TDengine versions 3.3.2.0 and above are recommended to use this connector.

323 lines (322 loc) 9.12 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.tagMeta = exports.jsonMeta = exports.tableMeta = void 0; exports.getInsertBind = getInsertBind; exports.insertStable = insertStable; exports.insertNTable = insertNTable; exports.createBaseSTable = createBaseSTable; exports.createBaseSTableJSON = createBaseSTableJSON; exports.createBaseTable = createBaseTable; exports.createSTable = createSTable; exports.createSTableJSON = createSTableJSON; exports.createTable = createTable; exports.expectStableData = expectStableData; exports.hexToBytes = hexToBytes; exports.compareUint8Arrays = compareUint8Arrays; exports.Sleep = Sleep; const log_1 = __importDefault(require("../src/common/log")); function getInsertBind(valuesLen, tagsLen, db, stable) { let sql = `insert into ? using ${db}.${stable} tags ( ?`; for (let i = 1; i < tagsLen; i++) { sql += ', ?'; } sql += ') values( ?'; for (let i = 1; i < valuesLen; i++) { sql += ', ?'; } sql += ')'; return sql; } function insertStable(values, tags, stable, table = 'empty') { let childTable = table == 'empty' ? stable + '_s_01' : table; let sql = `insert into ${childTable} using ${stable} tags (`; tags.forEach((tag) => { if ((typeof tag) == 'string') { if (tag == 'NULL') { sql += tag + ','; } else { sql += `\'${tag}\',`; } } else { sql += tag; sql += ','; } }); sql = sql.slice(0, sql.length - 1); sql += ')'; sql += 'values'; values.forEach(value => { sql += '('; value.forEach(v => { if ((typeof v) == 'string') { sql += `\'${v}\',`; } else { sql += v; sql += ','; } }); sql = sql.slice(0, sql.length - 1); sql += ')'; }); return sql; } function insertNTable(values, table) { let sql = `insert into ${table} values `; values.forEach(value => { sql += '('; value.forEach(v => { if ((typeof v) == 'string') { if (v == 'NULL') { sql += v + ','; } else { sql += `\'${v}\',`; } } else { sql += v; sql += ','; } }); sql = sql.slice(0, sql.length - 1); sql += ')'; }); return sql; } exports.tableMeta = [ { name: 'ts', type: 'TIMESTAMP', length: 8 }, { name: 'i1', type: 'TINYINT', length: 1 }, { name: 'i2', type: 'SMALLINT', length: 2 }, { name: 'i4', type: 'INT', length: 4 }, { name: 'i8', type: 'BIGINT', length: 8 }, { name: 'u1', type: 'TINYINT UNSIGNED', length: 1 }, { name: 'u2', type: 'SMALLINT UNSIGNED', length: 2 }, { name: 'u4', type: 'INT UNSIGNED', length: 4 }, { name: 'u8', type: 'BIGINT UNSIGNED', length: 8 }, { name: 'f4', type: 'FLOAT', length: 4 }, { name: 'd8', type: 'DOUBLE', length: 8 }, { name: 'bnr', type: 'VARCHAR', length: 200 }, { name: 'nchr', type: 'NCHAR', length: 200 }, { name: 'b', type: 'BOOL', length: 1 }, { name: 'nilcol', type: 'INT', length: 4 }, { name: 'geo', type: 'GEOMETRY', length: 512 }, { name: 'vbinary', type: 'VARBINARY', length: 32 }, ]; exports.jsonMeta = [ { name: 'json_tag', type: 'JSON', length: 4095 }, ]; exports.tagMeta = [ { name: 'tb', type: 'BOOL', length: 1 }, { name: 'ti1', type: 'TINYINT', length: 1 }, { name: 'ti2', type: 'SMALLINT', length: 2 }, { name: 'ti4', type: 'INT', length: 4 }, { name: 'ti8', type: 'BIGINT', length: 8 }, { name: 'tu1', type: 'TINYINT UNSIGNED', length: 1 }, { name: 'tu2', type: 'SMALLINT UNSIGNED', length: 2 }, { name: 'tu4', type: 'INT UNSIGNED', length: 4 }, { name: 'tu8', type: 'BIGINT UNSIGNED', length: 8 }, { name: 'tf4', type: 'FLOAT', length: 4 }, { name: 'td8', type: 'DOUBLE', length: 8 }, { name: 'tbnr', type: 'VARCHAR', length: 200 }, { name: 'tnchr', type: 'NCHAR', length: 200 }, ]; function createBaseSTable(stable) { return `create table if not exists ${stable}( ts timestamp,i1 tinyint,i2 smallint,i4 int,i8 bigint,u1 tinyint unsigned,u2 smallint unsigned,u4 int unsigned,u8 bigint unsigned,f4 float,d8 double,bnr binary(200),nchr nchar(200),b bool,nilcol int, g1 geometry(512), c4 varbinary(100))` + 'tags( tb bool,ti1 tinyint,ti2 smallint,ti4 int,ti8 bigint,tu1 tinyint unsigned,tu2 smallint unsigned,tu4 int unsigned,tu8 bigint unsigned,tf4 float,td8 double,tbnr binary(200),tnchr nchar(200));'; } function createBaseSTableJSON(stable) { return `create table if not exists ${stable}(ts timestamp,i1 tinyint,i2 smallint,i4 int,i8 bigint,u1 tinyint unsigned,u2 smallint unsigned,u4 int unsigned,u8 bigint unsigned,f4 float,d8 double,bnr binary(200),nchr nchar(200),b bool,nilcol int)` + 'tags(json_tag json);'; } function createBaseTable(table) { return `create table if not exists ${table}(ts timestamp,i1 tinyint,i2 smallint,i4 int,i8 bigint,u1 tinyint unsigned,u2 smallint unsigned,u4 int unsigned,u8 bigint unsigned,f4 float,d8 double,bnr binary(200),nchr nchar(200),b bool,nilcol int)`; } function createSTable(stable) { return `create table if not exists ${stable}( ts timestamp,i1 tinyint,i2 smallint,i4 int,i8 bigint,u1 tinyint unsigned,u2 smallint unsigned,u4 int unsigned,u8 bigint unsigned,f4 float,d8 double,bnr binary(200),nchr nchar(200),b bool,nilcol int, geo geometry(512), vbinary varbinary(32))` + 'tags( tb bool,ti1 tinyint,ti2 smallint,ti4 int,ti8 bigint,tu1 tinyint unsigned,tu2 smallint unsigned,tu4 int unsigned,tu8 bigint unsigned,tf4 float,td8 double,tbnr binary(200),tnchr nchar(200));'; } function createSTableJSON(stable) { return `create table if not exists ${stable}(ts timestamp,i1 tinyint,i2 smallint,i4 int,i8 bigint,u1 tinyint unsigned,u2 smallint unsigned,u4 int unsigned,u8 bigint unsigned,f4 float,d8 double,bnr binary(200),nchr nchar(200),b bool,nilcol int, geo geometry(512), vbinary varbinary(32))` + 'tags(json_tag json);'; } function createTable(table) { return `create table if not exists ${table}(ts timestamp,i1 tinyint,i2 smallint,i4 int,i8 bigint,u1 tinyint unsigned,u2 smallint unsigned,u4 int unsigned,u8 bigint unsigned,f4 float,d8 double,bnr binary(200),nchr nchar(200),b bool,nilcol int, geo geometry(512), vbinary varbinary(32))`; } function expectStableData(rows, tags) { let resArr = []; rows.forEach((row, index, rows) => { resArr.push(row.concat(tags)); }); return resArr; } function hexToBytes(hex) { let byteLen = hex.length / 2; let a = new Uint8Array(byteLen); for (let i = 0, count = 0; i < hex.length; i += 2, count++) { let item = parseInt(hex.slice(i, i + 2), 16); a[count] = item; } return a.buffer; } // export function createStmtData(varbinary:string = "ab", // geoHex:string = "0101000020E6100000000000000000F03F0000000000000040"):Array<Array<any>> { // let multi:any[][] = [ // [1709183268567, 1709183268568, 1709183268569], // [10.2, 10.3, 10.4], // [292, 293, 294], // [0.32, 0.33, 0.34], // ]; // let res = hexToBytes(geoHex) // let geom = Array.from(new Uint8Array(res)) // multi.push([geom, geom, geom]) // res = new TextEncoder().encode(varbinary) // let binary = Array.from(new Uint8Array(res)) // multi.push([binary, binary, binary]) // return multi // } function compareUint8Arrays(arr1, arr2) { if (arr1.length !== arr2.length) { log_1.default.debug(`${arr1.length} !== ${arr2.length}`); return false; } for (let i = 0; i < arr1.length; i++) { if (arr1[i] !== arr2[i]) { log_1.default.debug(`${arr1[i]} !== ${arr2[i]}`); return false; } } return true; } function Sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); }