You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
"use strict";
|
|
|
|
const Promise = require("bluebird");
|
|
const asTable = require("as-table");
|
|
|
|
const createClient = require("../src/client");
|
|
const { select, collapseBy, hierarchical, compute, count, sum, where, anyOf, allOf, parameter, unsafeSQL, moreThan } = require("../src/operations");
|
|
|
|
// let query = select("sales", [
|
|
// // where({ size: moreThan(anyOf(parameter("sizes"))) }), // should work
|
|
// // where({ size: moreThan(anyOf([1, 2, 3])) }), // should work
|
|
// where({ size: moreThan(anyOf([1, allOf([2, 3]) ])) }), // should work
|
|
// // where({ size: anyOf(unsafeSQL("")) }),
|
|
// collapseBy([ "color", "size", hierarchical([ "country_id", "store_id" ]) ], [
|
|
// compute({
|
|
// total_sold: count(),
|
|
// total_revenue: sum("price")
|
|
// })
|
|
// ])
|
|
// ]);
|
|
|
|
let query = select("sales", [
|
|
where({ size: anyOf(parameter("sizes")) }),
|
|
collapseBy(["size"], [
|
|
compute({ total_revenue: sum("price") })
|
|
])
|
|
]);
|
|
|
|
let client = createClient({
|
|
socket: "/var/run/postgresql",
|
|
database: "movietest"
|
|
});
|
|
|
|
return Promise.try(() => {
|
|
let sizes = [ "S", "M", "L", "XL" ];
|
|
|
|
return client.query(query, { sizes });
|
|
}).then((results) => {
|
|
console.log(asTable(results));
|
|
|
|
return client.destroy();
|
|
});
|
|
|