UNPKG

rdb-demo

Version:
126 lines (104 loc) 7.15 kB
let fs = require('fs'); let promise = require('promise/domains'); let conString = require('./connectionString'); // let conString = ':memory:'; let sqlite = require('sqlite3'); let drop = ["DROP TABLE IF EXISTS _compositeOrderLine", "DROP TABLE IF EXISTS _compositeOrder", "DROP TABLE IF EXISTS _deliveryAddress", "DROP TABLE IF EXISTS _orderLine", "DROP TABLE IF EXISTS _order", "DROP TABLE IF EXISTS _customer", "DROP TABLE IF EXISTS _user"] let createCustomer = ["CREATE TABLE _customer (cId TEXT PRIMARY KEY, cName TEXT, cBalance NUMERIC, cRegdate TEXT, cIsActive INTEGER, cPicture BLOB, cDocument TEXT)"] let createUser = ["CREATE TABLE _user (uId TEXT PRIMARY KEY, uUserId TEXT, uPassword TEXT, uEmail TEXT)"] let createOrder = ["CREATE TABLE _order (oId TEXT PRIMARY KEY, oOrderNo TEXT, oCustomerId TEXT REFERENCES _customer)"] let createOrderLine = ["CREATE TABLE _orderLine (lId TEXT PRIMARY KEY, lOrderId TEXT REFERENCES _order, lProduct TEXT)"] let createCompositeOrder = ["CREATE TABLE _compositeOrder (oCompanyId NUMERIC, oOrderNo NUMERIC, oCustomerId TEXT REFERENCES _customer, PRIMARY KEY (oCompanyId,oOrderNo))"]; let createCompositeOrderLine = ["CREATE TABLE _compositeOrderLine (lCompanyId NUMERIC, lOrderNo NUMERIC, lLineNo NUMERIC, lProduct TEXT, PRIMARY KEY (lCompanyId,lOrderNo, lLineNo))"]; let createDeliveryAddress = ["CREATE TABLE _deliveryAddress (dId TEXT PRIMARY KEY, dOrderId TEXT REFERENCES _order, dName TEXT, dStreet TEXT, dPostalCode TEXT, dPostalPlace TEXT, dCountryCode TEXT, dCountry TEXT)"]; let createSql = drop.concat(createCustomer, createOrder, createOrderLine, createDeliveryAddress, createCompositeOrder, createCompositeOrderLine, createUser); let buffer; let buffer2; createBuffers(); let insertCustomer1 = "INSERT INTO _customer VALUES ('a0000000-0000-0000-0000-000000000000','George',177,'2003-04-12 04:05:06',0,?, '[\"foo\", 1, {\"bar\": true}]')"; let insertCustomer2 = "INSERT INTO _customer VALUES ('b0000000-0000-0000-0000-000000000000','John',3045,'2014-05-11 06:49:40.297',1,?,null)"; let insertCustomer3 = "INSERT INTO _customer VALUES ('12345678-0000-0000-0000-000000000000','Yoko',8765,'2012-02-10 07:00:40.297',0,?,null)"; let insertCustomer4 = "INSERT INTO _customer VALUES ('87654321-0000-0000-0000-000000000000','Johnny',8123,'2011-03-11 06:00:40.297',1,?,null)"; let insertCustomer5 = "INSERT INTO _customer VALUES ('87654399-0000-0000-0000-000000000000','Paul',8125,'2011-04-11 06:00:40.297',1,?,null)"; // let insertCustomers = insertCustomer1.concat(insertCustomer2, insertCustomer3, insertCustomer4, insertCustomer5); let insertUser1 = ["INSERT INTO _user VALUES ('87654400-0000-0000-0000-000000000000','paul','secretPassword','paul@mccartney.net')"]; let insertUser2 = ["INSERT INTO _user VALUES ('97654400-0000-0000-0000-000000000000','john','myPassword','john@lennon.net')"]; let insertUsers = insertUser1.concat(insertUser2); let insertOrders = [ "INSERT INTO _order VALUES ('a0000000-a000-0000-0000-000000000000','1000', 'a0000000-0000-0000-0000-000000000000')", "INSERT INTO _order VALUES ('b0000000-b000-0000-0000-000000000000','1001', 'b0000000-0000-0000-0000-000000000000')", "INSERT INTO _order VALUES ('c0000000-c000-0000-0000-000000000000','1002', null)", "INSERT INTO _order VALUES ('b0000000-d000-0000-0000-000000000000','1003', '87654399-0000-0000-0000-000000000000')", "INSERT INTO _order VALUES ('d0000000-e000-0000-0000-000000000000','1004', 'a0000000-0000-0000-0000-000000000000')", "INSERT INTO _compositeOrder VALUES (1,1001, null)" ]; let insertOrderLines = [ "INSERT INTO _orderLine VALUES ('a0000000-a000-1000-0000-000000000000','a0000000-a000-0000-0000-000000000000','Bicycle')", "INSERT INTO _orderLine VALUES ('a0000000-a000-1001-0000-000000000000','a0000000-a000-0000-0000-000000000000','A small car')", "INSERT INTO _orderLine VALUES ('a0000000-a000-2000-0000-000000000000','a0000000-a000-0000-0000-000000000000','Skateboard')", "INSERT INTO _orderLine VALUES ('b0000000-b000-1000-0000-000000000000','b0000000-b000-0000-0000-000000000000','Climbing gear')", "INSERT INTO _orderLine VALUES ('b0000000-b000-2000-0000-000000000000','b0000000-b000-0000-0000-000000000000','Hiking shoes')", "INSERT INTO _orderLine VALUES ('b0000000-b000-3000-0000-000000000000','b0000000-b000-0000-0000-000000000000','A big car')", "INSERT INTO _orderLine VALUES ('b0000000-b000-3100-0000-000000000000','b0000000-d000-0000-0000-000000000000','A yellow submarine')", "INSERT INTO _compositeOrderLine VALUES (1,1001,1,'Free lunch')", "INSERT INTO _compositeOrderLine VALUES (1,1001,2,'Guide to the galaxy')" ]; let insertDeliveryAddress = ["INSERT INTO _deliveryAddress values ('dddddddd-0000-0000-0000-000000000000','b0000000-b000-0000-0000-000000000000', 'Lars-Erik Roald', 'Node Street 1', '7030', 'Trondheim', 'NO', 'Norway')"] let insertSql = [].concat(insertOrders, insertOrderLines, insertDeliveryAddress, insertUsers); // let queries = [].concat(createSql); function createBuffers() { buffer = Buffer.from([1, 2, 3]); buffer2 = Buffer.from([4, 5]); } function insert(onSuccess, onFailed) { let client = new sqlite.Database(conString); client.serialize(function() { for (let i = 0; i < createSql.length; i++) { client.run(createSql[i]); } client.run(insertCustomer1, buffer); client.run(insertCustomer2, buffer2); client.run(insertCustomer3, buffer2); client.run(insertCustomer4, buffer2); client.run(insertCustomer5, buffer2); let query; for (let i = 0; i < insertSql.length; i++) { if (i === insertSql.length - 1) // client.run(insertSql[i], onLastQueryDone); client.run("select order_0.lId as sorder_00,order_0.lproduct as sorder_01,order_0.lOrderId as sorder_02 from _orderLine order_0 where order_0.lOrderId IN (select * from (select _order.oid as sorder0 from _order _order where _order.oorderno like '%00%' order by _order.oCustomerId desc limit 3) sub);", onLastQueryDone); else client.run(insertSql[i]); } // client.run("delete from _orderLine where _orderLine.rowId in (SELECT _2.rowId FROM _orderLine _2 where EXISTS (SELECT _1.oId FROM _order AS _1 INNER JOIN _customer _customer ON (_1.oCustomerId=_customer.cId) WHERE _2.lOrderId=_1.oId AND _customer.cId='87654399-0000-0000-0000-000000000000'))", onLastQueryDone) }); function onLastQueryDone(e,e2) { if (e) console.log(e.stack); // console.log(e) client.close(); onSuccess(); } } // insert(onOk, onError); // let resetOnce = new promise(insert); // resetOnce.then(onOk,onError); // function onOk() { // console.log('ok'); // } // function onError(e) { // console.log(e.stack); // } // module.exports = function() { // return resetOnce; // }; let resetOnce = new promise(insert); // resetOnce.then(onOk, onError); function onOk(row) { console.log(row); } function onError(e) { console.log(e.stack); } module.exports = function() { return resetOnce; };