From c3ae1155468b82b698357c10913e1b5fa01be5ff Mon Sep 17 00:00:00 2001 From: lana-k Date: Mon, 28 Dec 2020 12:46:45 +0100 Subject: [PATCH] use execute method --- src/{dataBase.js => database.js} | 31 +++++++++---------- src/main.js | 2 +- .../{dataBase.spec.js => database.spec.js} | 23 ++++++++++---- 3 files changed, 33 insertions(+), 23 deletions(-) rename src/{dataBase.js => database.js} (81%) rename tests/unit/{dataBase.spec.js => database.spec.js} (62%) diff --git a/src/dataBase.js b/src/database.js similarity index 81% rename from src/dataBase.js rename to src/database.js index 5aed013..e5206ad 100644 --- a/src/dataBase.js +++ b/src/database.js @@ -14,24 +14,23 @@ export default { FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%';` - // on 'action: exec' completed - worker.onmessage = event => { - // Parse DDL statements to get column names and types - const parsedSchema = [] - event.data.results[0].values.forEach(item => { - parsedSchema.push({ - name: item[0], - columns: getColumns(item[1]) + this.execute(getSchemaSql) + .then(result => { + // Parse DDL statements to get column names and types + const parsedSchema = [] + result.values.forEach(item => { + parsedSchema.push({ + name: item[0], + columns: getColumns(item[1]) + }) + }) + + // Return db name and schema + resolve({ + dbName: file.name, + schema: parsedSchema }) }) - - // Return db name and schema - resolve({ - dbName: file.name, - schema: parsedSchema - }) - } - worker.postMessage({ action: 'exec', sql: getSchemaSql }) } try { diff --git a/src/main.js b/src/main.js index 27648f7..312b8de 100644 --- a/src/main.js +++ b/src/main.js @@ -4,7 +4,7 @@ import router from './router' import store from './store' import { VuePlugin } from 'vuera' import VModal from 'vue-js-modal' -import db from '@/dataBase' +import db from '@/database' import '@/assets/styles/variables.css' import '@/assets/styles/buttons.css' diff --git a/tests/unit/dataBase.spec.js b/tests/unit/database.spec.js similarity index 62% rename from tests/unit/dataBase.spec.js rename to tests/unit/database.spec.js index 8aeb8f3..6af1105 100644 --- a/tests/unit/dataBase.spec.js +++ b/tests/unit/database.spec.js @@ -14,19 +14,26 @@ describe('HelloWorld.vue', () => { */ import { expect } from 'chai' import initSqlJs from 'sql.js' -import db from '@/dataBase.js' +import db from '@/database.js' -describe('dataBase.js', () => { +describe('database.js', () => { it('creates schema', () => { const config = { locateFile: filename => `js/sql-wasm.wasm` } return initSqlJs(config) .then(SQL => { - const dataBase = new SQL.Database() - dataBase.run('CREATE TABLE test (col1, col2);') + const database = new SQL.Database() + database.run(` + CREATE TABLE test ( + col1, + col2 integer, + col3 decimal(5,2), + col4 varchar(30) + ) + `) - const data = dataBase.export() + const data = database.export() const buffer = new Blob([data]) return db.loadDb(buffer) }) @@ -37,7 +44,11 @@ describe('dataBase.js', () => { expect(schema[0].columns[0].name).to.equal('col1') expect(schema[0].columns[0].type).to.equal('N/A') expect(schema[0].columns[1].name).to.equal('col2') - expect(schema[0].columns[1].type).to.equal('N/A') + expect(schema[0].columns[1].type).to.equal('integer') + expect(schema[0].columns[2].name).to.equal('col3') + expect(schema[0].columns[2].type).to.equal('decimal(5, 2)') + expect(schema[0].columns[3].name).to.equal('col4') + expect(schema[0].columns[3].type).to.equal('varchar(30)') }) }) }) \ No newline at end of file