Open
Description
pg-promise
documentation features a concept of query files.
This is effectively a helper function that is used to prepare a statement using pg-promise
, e.g.
const path = require('path');
// Helper for linking to external query files:
function sql(file) {
const fullPath = path.join(__dirname, file);
return new pgp.QueryFile(fullPath, {minify: true});
}
// Create a QueryFile globally, once per file:
const sqlFindUser = sql('./sql/findUser.sql');
db.one(sqlFindUser, {id: 123})
.then(user => {
console.log(user);
})
.catch(error => {
if (error instanceof pgp.errors.QueryFileError) {
// => the error is related to our QueryFile
}
});
In case of Slonik, this would be best implement using sql.raw
, e.g.
const getQuery = (queryName, parameters = []) => {
return sql`${sql.raw(
fs.readFileSync(path.resolve(__dirname, 'queries', queryName + '.sql'), parameters)
)}`;
};
connection.query(getQuery('foo', [1, 2, 3]));
I don't see an immediate need to either add helper for loading queries or to advertise this as a distinct feature.
What abstraction could Slonik offer here and what value would it add?
Metadata
Metadata
Assignees
Labels
No labels