Feat: make queries with schema changing
This commit is contained in:
parent
2eda9645b3
commit
47614c9637
2 changed files with 66 additions and 0 deletions
10
lib/db.js
10
lib/db.js
|
|
@ -4,9 +4,19 @@ const _ = require('lodash/fp')
|
|||
const psqlUrl = require('../lib/options').postgresql
|
||||
const logger = require('./logger')
|
||||
const eventBus = require('./event-bus')
|
||||
const extendedQueries = require('./extendedQueries')
|
||||
|
||||
const pgp = Pgp({
|
||||
pgNative: true,
|
||||
extend (obj, dbContext) {
|
||||
obj.$any = (query, tables, variables) => extendedQueries.any(obj, dbContext, query, tables, variables)
|
||||
obj.$one = (query, tables, variables) => extendedQueries.one(obj, dbContext, query, tables, variables)
|
||||
obj.$oneOrNone = (query, tables, variables) => extendedQueries.oneOrNone(obj, dbContext, query, tables, variables)
|
||||
obj.$many = (query, tables, variables) => extendedQueries.many(obj, dbContext, query, tables, variables)
|
||||
obj.$manyOrNone = (query, tables, variables) => extendedQueries.manyOrNone(obj, dbContext, query, tables, variables)
|
||||
obj.$none = (query, tables, variables) => extendedQueries.none(obj, dbContext, query, tables, variables)
|
||||
obj.$result = (query, tables, variables, cb) => extendedQueries.result(obj, dbContext, query, tables, variables, cb)
|
||||
},
|
||||
error: (err, e) => {
|
||||
if (e.cn) logger.error('Database not reachable.')
|
||||
if (e.query) {
|
||||
|
|
|
|||
56
lib/extendedQueries.js
Normal file
56
lib/extendedQueries.js
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
const _ = require('lodash/fp')
|
||||
|
||||
const concatSchema = (qry, tables) => {
|
||||
const schemaName = 'public' // fetch schema name from Async Local Storage here
|
||||
let query = qry
|
||||
_.forEach(tableName => { query = query.replace(tableName, `${schemaName}.${tableName}`) }, tables)
|
||||
return query
|
||||
}
|
||||
|
||||
const any = (db, dbContext, qry, tables, variables) => {
|
||||
const query = concatSchema(qry, tables)
|
||||
return db.any(query, variables)
|
||||
}
|
||||
|
||||
const manyOrNone = (db, dbContext, qry, tables, variables) => {
|
||||
const query = concatSchema(qry, tables)
|
||||
return db.manyOrNone(query, variables)
|
||||
}
|
||||
|
||||
const none = (db, dbContext, qry, tables, variables) => {
|
||||
const query = concatSchema(qry, tables)
|
||||
return db.none(query, variables)
|
||||
}
|
||||
|
||||
const many = (db, dbContext, qry, tables, variables) => {
|
||||
const query = concatSchema(qry, tables)
|
||||
return db.many(query, variables)
|
||||
}
|
||||
|
||||
const oneOrNone = (db, dbContext, qry, tables, variables) => {
|
||||
const query = concatSchema(qry, tables)
|
||||
return db.oneOrNone(query, variables)
|
||||
}
|
||||
|
||||
const one = (db, dbContext, qry, tables, variables) => {
|
||||
const query = concatSchema(qry, tables)
|
||||
return db.one(query, variables)
|
||||
}
|
||||
|
||||
const result = (db, dbContext, qry, tables, variables, cb) => {
|
||||
const query = concatSchema(qry, tables)
|
||||
console.log(query)
|
||||
return db.result(query, variables).then(r => {
|
||||
return cb ? cb(r) : r
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
any,
|
||||
manyOrNone,
|
||||
none,
|
||||
many,
|
||||
oneOrNone,
|
||||
one,
|
||||
result
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue