Skip to content

Commit

Permalink
feat(lab): implement prepare statement
Browse files Browse the repository at this point in the history
  • Loading branch information
oscar60310 committed Aug 31, 2022
1 parent 98063a3 commit 5730b0b
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 15 deletions.
33 changes: 24 additions & 9 deletions labs/playground1/playground-exts/mockDb.js
Expand Up @@ -3,6 +3,16 @@ const { Stream } = require('stream');
const duckdb = require('duckdb');
const path = require('path');
const db = new duckdb.Database(path.resolve(__dirname, '..', 'test-data', 'moma.db'));
const _ = require('lodash');
// TODO: create logger from core package;
const { Logger } = require('tslog');
const logger = new Logger({
name: 'duckdb',
minLevel: 'info',
exposeErrorCodeFrame: false,
displayFilePath: 'hidden',
displayFunctionName: false,
});

const getType = (value) => {
const jsType = typeof (value);
Expand All @@ -18,17 +28,22 @@ class MockDataSource extends DataSource {
const { statement, bindParams } = options;
// handle parameterized query statement
let query = statement;
for (const identifier of Object.keys(bindParams)) {
query = query.replace(
// escape special char '$'
new RegExp(identifier.replace('$', '\\$'), 'g'),
bindParams[identifier]
);
}

const parameters =
// {$1: 'v1', $3: 'v3', $2: 'v2' }
_.chain(bindParams)
// [[$1, 'v1'], [$3, 'v3'], [$2, 'v2']]
.toPairs()
// [[$1, 'v1'], [$2, 'v2'], [$3, 'v3']]
.orderBy(([name,]) => Number(name.slice(1)))
// ['v1,'v2','v3']
.map(([_, value]) => value)
.value()


return new Promise((resolve, reject) => {
console.log(query);
db.all(query, function (err, res) {
logger.info(query, parameters);
db.all(query, ...parameters, function (err, res) {
if (err) {
return reject(err)
}
Expand Down
2 changes: 1 addition & 1 deletion labs/playground1/sqls/artist/works.sql
Expand Up @@ -2,4 +2,4 @@ select
*
from "artworks"
where
concat(', ' , ConstituentID , ',') like '%, {{ context.params.id }},%'
concat(', ' , ConstituentID , ',') like concat('%, ', {{ context.params.id }} , ',%');
5 changes: 0 additions & 5 deletions labs/playground1/sqls/artist/works.yaml
Expand Up @@ -5,8 +5,3 @@ request:
description: constituent id
validators:
- required
- fieldName: acq_lt
fieldIn: query
description: acquired data latter than
validators:
- date

0 comments on commit 5730b0b

Please sign in to comment.