Skip to content

Instantly share code, notes, and snippets.

@gamefreak
Last active January 7, 2024 19:37
Show Gist options
  • Save gamefreak/4f663343da8b92a98c2a8f87bc7d5e51 to your computer and use it in GitHub Desktop.
Save gamefreak/4f663343da8b92a98c2a8f87bc7d5e51 to your computer and use it in GitHub Desktop.
const Sequelize = require('sequelize');
function doQuery(connection, parts, ...args) {
let sqlString = parts[0];
for (let i = 1; i < parts.length; i++) {
sqlString += ' $' + i + ' ' + parts[i];
}
return connection.query(sqlString, {
bind: args
});
}
(async () => {
const connection = new Sequelize('sqlite::memory:');
const QUERY = doQuery.bind(undefined, connection);
await QUERY`CREATE TABLE foo(a NUMBER, b NUMBER, c NUMBER)`;
for (let i = 0; i < 10; i++) {
await QUERY`INSERT INTO foo VALUES(${3*i}, ${3*i+1}, ${3*i+2})`;
}
for (let mod = 1; mod < 5; mod++) {
console.log('mod ', mod);
let res = await QUERY`SELECT * FROM foo WHERE a % ${mod} = 0`;
console.log(res);
console.log();
}
})();
node .\main.js
Executing (default): CREATE TABLE foo(a NUMBER, b NUMBER, c NUMBER)
Executing (default): INSERT INTO foo VALUES( $1 , $2 , $3 )
Executing (default): INSERT INTO foo VALUES( $1 , $2 , $3 )
Executing (default): INSERT INTO foo VALUES( $1 , $2 , $3 )
Executing (default): INSERT INTO foo VALUES( $1 , $2 , $3 )
Executing (default): INSERT INTO foo VALUES( $1 , $2 , $3 )
Executing (default): INSERT INTO foo VALUES( $1 , $2 , $3 )
Executing (default): INSERT INTO foo VALUES( $1 , $2 , $3 )
Executing (default): INSERT INTO foo VALUES( $1 , $2 , $3 )
Executing (default): INSERT INTO foo VALUES( $1 , $2 , $3 )
Executing (default): INSERT INTO foo VALUES( $1 , $2 , $3 )
mod 1
Executing (default): SELECT * FROM foo WHERE a % $1 = 0
[
[
{ a: 0, b: 1, c: 2 },
{ a: 3, b: 4, c: 5 },
{ a: 6, b: 7, c: 8 },
{ a: 9, b: 10, c: 11 },
{ a: 12, b: 13, c: 14 },
{ a: 15, b: 16, c: 17 },
{ a: 18, b: 19, c: 20 },
{ a: 21, b: 22, c: 23 },
{ a: 24, b: 25, c: 26 },
{ a: 27, b: 28, c: 29 }
],
Statement {}
]
mod 2
Executing (default): SELECT * FROM foo WHERE a % $1 = 0
[
[
{ a: 0, b: 1, c: 2 },
{ a: 6, b: 7, c: 8 },
{ a: 12, b: 13, c: 14 },
{ a: 18, b: 19, c: 20 },
{ a: 24, b: 25, c: 26 }
],
Statement {}
]
mod 3
Executing (default): SELECT * FROM foo WHERE a % $1 = 0
[
[
{ a: 0, b: 1, c: 2 },
{ a: 3, b: 4, c: 5 },
{ a: 6, b: 7, c: 8 },
{ a: 9, b: 10, c: 11 },
{ a: 12, b: 13, c: 14 },
{ a: 15, b: 16, c: 17 },
{ a: 18, b: 19, c: 20 },
{ a: 21, b: 22, c: 23 },
{ a: 24, b: 25, c: 26 },
{ a: 27, b: 28, c: 29 }
],
Statement {}
]
mod 4
Executing (default): SELECT * FROM foo WHERE a % $1 = 0
[
[
{ a: 0, b: 1, c: 2 },
{ a: 12, b: 13, c: 14 },
{ a: 24, b: 25, c: 26 }
],
Statement {}
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment