@heroku-cli/plugin-pg-v5
Version:
Heroku CLI plugin to manage Postgres.
57 lines (47 loc) • 1.65 kB
JavaScript
const cli = require('heroku-cli-util')
exports.boolean = value => {
switch (value) {
case 'true': case 'TRUE': case 'ON': case 'on': case true:
return true
case 'false': case 'FALSE': case 'OFF': case 'off': case null: case false:
return false
default:
throw new TypeError('Invalid value. Valid options are: a boolean value')
}
}
exports.enum = value => {
return value
}
exports.numeric = value => {
let n = Number(value)
if (!Number.isFinite(n)) {
throw new TypeError('Invalid value. Valid options are: a numeric value')
}
return n
}
exports.generate = (name, convert, explain) => {
return async function run(context, heroku) {
const host = require('./host')
const util = require('./util')
const fetcher = require('./fetcher')(heroku)
const {app, args} = context
const {value, database} = args
const db = await fetcher.addon(app, database)
if (util.essentialPlan(db)) throw new Error('You can’t perform this operation on Essential-tier databases.')
if (!value) {
let settings = await heroku.get(`/postgres/v0/databases/${db.id}/config`, {host: host(db)})
let setting = settings[name]
cli.log(`${name.replace(/_/g, '-')} is set to ${setting.value} for ${db.name}.`)
cli.log(explain(setting))
} else {
let settings = await heroku.patch(`/postgres/v0/databases/${db.id}/config`, {
host: host(db),
body: {[name]: convert(value)},
})
let setting = settings[name]
cli.log(`${name.replace(/_/g, '-')} has been set to ${setting.value} for ${db.name}.`)
cli.log(explain(setting))
}
}
}