UNPKG

plyql

Version:

A SQL-like interface for Plywood

185 lines (184 loc) 5.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var plywood_1 = require("plywood"); var datasets_1 = require("./datasets"); var DB_NAME = 'plyql1'; var schemataData = [ { "CATALOG_NAME": "def", "SCHEMA_NAME": "information_schema", "DEFAULT_CHARACTER_SET_NAME": "utf8", "DEFAULT_COLLATION_NAME": "utf8_general_ci", "SQL_PATH": null }, { "CATALOG_NAME": "def", "SCHEMA_NAME": DB_NAME, "DEFAULT_CHARACTER_SET_NAME": "utf8", "DEFAULT_COLLATION_NAME": "utf8_general_ci", "SQL_PATH": null } ]; var tablesData = [ { "TABLE_CATALOG": "def", "TABLE_SCHEMA": "information_schema", "TABLE_NAME": "COLUMNS", "TABLE_TYPE": "SYSTEM VIEW", "ENGINE": "InnoDB", "VERSION": 10, "ROW_FORMAT": "Dynamic", "TABLE_ROWS": null, "AVG_ROW_LENGTH": 0, "DATA_LENGTH": 16384, "MAX_DATA_LENGTH": 0, "INDEX_LENGTH": 0, "DATA_FREE": 141557760, "AUTO_INCREMENT": null, "CREATE_TIME": null, "UPDATE_TIME": null, "CHECK_TIME": null, "TABLE_COLLATION": "utf8_general_ci", "CHECKSUM": null, "CREATE_OPTIONS": "max_rows=2789", "TABLE_COMMENT": '' }, { "TABLE_CATALOG": "def", "TABLE_SCHEMA": "information_schema", "TABLE_NAME": "SCHEMATA", "TABLE_TYPE": "SYSTEM VIEW", "ENGINE": "MEMORY", "VERSION": 10, "ROW_FORMAT": "Fixed", "TABLE_ROWS": null, "AVG_ROW_LENGTH": 3464, "DATA_LENGTH": 0, "MAX_DATA_LENGTH": 16738048, "INDEX_LENGTH": 0, "DATA_FREE": 0, "AUTO_INCREMENT": null, "CREATE_TIME": null, "UPDATE_TIME": null, "CHECK_TIME": null, "TABLE_COLLATION": "utf8_general_ci", "CHECKSUM": null, "CREATE_OPTIONS": "max_rows=4843", "TABLE_COMMENT": '' }, { "TABLE_CATALOG": "def", "TABLE_SCHEMA": "information_schema", "TABLE_NAME": "TABLES", "TABLE_TYPE": "SYSTEM VIEW", "ENGINE": "MEMORY", "VERSION": 10, "ROW_FORMAT": "Fixed", "TABLE_ROWS": null, "AVG_ROW_LENGTH": 9441, "DATA_LENGTH": 0, "MAX_DATA_LENGTH": 16757775, "INDEX_LENGTH": 0, "DATA_FREE": 0, "AUTO_INCREMENT": null, "CREATE_TIME": null, "UPDATE_TIME": null, "CHECK_TIME": null, "TABLE_COLLATION": "utf8_general_ci", "CHECKSUM": null, "CREATE_OPTIONS": "max_rows=1777", "TABLE_COMMENT": '' } ]; function addExternalToTables(source) { tablesData.push({ "TABLE_CATALOG": "def", "TABLE_SCHEMA": DB_NAME, "TABLE_NAME": source, "TABLE_TYPE": "BASE TABLE", "ENGINE": "InnoDB", "VERSION": 10, "ROW_FORMAT": "Dynamic", "TABLE_ROWS": 1e7, "AVG_ROW_LENGTH": 1337, "DATA_LENGTH": 90832896, "MAX_DATA_LENGTH": 0, "INDEX_LENGTH": 0, "DATA_FREE": 6291456, "AUTO_INCREMENT": null, "CREATE_TIME": null, "UPDATE_TIME": null, "CHECK_TIME": null, "TABLE_COLLATION": "utf8_general_ci", "CHECKSUM": null, "CREATE_OPTIONS": '', "TABLE_COMMENT": '' }); } var columnsData = datasets_1.getData('columns'); function getDataType(type) { switch (type) { case 'BOOLEAN': return 'tinyint'; case 'STRING': return 'varchar'; case 'SET/STRING': return 'varchar'; case 'NUMBER': return 'double'; case 'TIME': return 'timestamp'; default: return 'varchar'; } } function getColumnType(type) { switch (type) { case 'BOOLEAN': return 'tinyint(1)'; case 'STRING': return 'varchar(255)'; case 'SET/STRING': return 'varchar(255)'; case 'NUMBER': return 'double'; case 'TIME': return 'timestamp'; default: return 'varchar(255)'; } } function addExternalToColumns(source, external, mysqlTypes) { var attributes = external.attributes; for (var i = 0; i < attributes.length; i++) { var attribute = attributes[i]; columnsData.push({ "TABLE_CATALOG": "def", "TABLE_SCHEMA": DB_NAME, "TABLE_NAME": source, "COLUMN_NAME": attribute.name, "ORDINAL_POSITION": i + 1, "COLUMN_DEFAULT": null, "IS_NULLABLE": "YES", "DATA_TYPE": mysqlTypes ? getDataType(attribute.type) : attribute.type, "CHARACTER_MAXIMUM_LENGTH": 255, "CHARACTER_OCTET_LENGTH": 1020, "NUMERIC_PRECISION": null, "NUMERIC_SCALE": null, "DATETIME_PRECISION": null, "CHARACTER_SET_NAME": "utf8mb4", "COLLATION_NAME": "utf8mb4_bin", "COLUMN_TYPE": mysqlTypes ? getColumnType(attribute.type) : attribute.type, "COLUMN_KEY": '', "EXTRA": '', "PRIVILEGES": "select", "COLUMN_COMMENT": attribute.nativeType || '', "GENERATION_EXPRESSION": '' }); } } function addExternal(source, external, mysqlTypes) { addExternalToTables(source); addExternalToColumns(source, external, mysqlTypes); } exports.addExternal = addExternal; function getSchemataDataset() { return plywood_1.Dataset.fromJS(schemataData); } exports.getSchemataDataset = getSchemataDataset; function getTablesDataset() { return plywood_1.Dataset.fromJS(tablesData); } exports.getTablesDataset = getTablesDataset; function getColumnsDataset() { return plywood_1.Dataset.fromJS(columnsData); } exports.getColumnsDataset = getColumnsDataset;