blob: 502dd1c3011170f2c0fb5e146b385e2ce6f4d2d9 [file]
const { Sequelize } = require('sequelize')
const defaultDbConfig = require('@config/resolveConfig').postgres.connectionString
const DEBUG = process.env.DEBUG
module.exports = {
// variables: ['Hello world!']
execute: async (sql, variables, transaction, dbConfig = defaultDbConfig) => {
const options = {
// TODO: try to put paging here for all queries
// Maybe start date end date and sort too
replacements: variables
}
if (transaction) {
options.transaction = transaction
}
let connection
try {
connection = module.exports.sequelize(dbConfig)
const data = await connection.query(sql, options)
// If we do not close these manually, we eventually run out of connections
await connection.close()
return data
} catch (error) {
console.error(error)
if (connection) {
await connection.close()
}
throw error
}
},
sequelize: (dbConfig) => {
try {
return new Sequelize(dbConfig.database, dbConfig.username, dbConfig.password, {
host: dbConfig.host,
dialect: 'postgres',
port: dbConfig.port,
logging: DEBUG ? console.log : false,
pool: {
max: 100,
min: 0,
acquire: 30000,
idle: 10000
}
})
} catch (error) {
console.error('ERROR: Could not connect to postgres', error)
process.exit()
}
}
}