/**
* Command line script - Operations with Redis database for current app
* Usage: ubcli redis --help
*
* @author pavel.mash
* @module redis
* @memberOf module:@unitybase/ubcli
*/
const base = require('@unitybase/base')
const options = base.options
const argv = base.argv
module.exports = function crypt () {
if (options.switchIndex('?') !== -1 || options.switchIndex('help') !== -1 ||
options.switchIndex('-help') !== -1) {
showUsage()
return
}
const serverConfig = argv.getServerConfiguration()
const rcfg = serverConfig.application.redis
if (!rcfg || !rcfg.enabled) {
console.warn('Redis is not enabled for app in config')
return
}
const redis = require('@unitybase/redis')
const redisConn = new redis.RedisClient(rcfg)
const [, , , cmd, arg1, arg2] = process.argv
// const connDesc = `${rcfg.host}:${rcfg.port} DB=${rcfg.dbIndex}`
if (cmd === 'flush') {
try {
redisConn.commands('FLUSHDB')
console.log('Redis database \'FLUSHDB\': success')
} catch (e) {
console.error('Error flushing a Redis database:', e.message)
}
} else if (cmd === 'keys') {
const mask = arg1 || '*'
const res = redisConn.commands('KEYS', mask)
console.log(res)
} else if (cmd === 'get') {
const key = arg1
if (!key) throw new Error('usage: ubcli redis get my_key')
const res = redisConn.commands('GET', key)
console.log(res)
} else if (cmd === 'set') {
const key = arg1
const val = arg2
if (!key || !val) throw new Error('usage: ubcli redis set my_key myVal')
const res = redisConn.commands('SET', key, val)
console.log(res)
} else if (cmd === 'del') {
const key = arg1
if (!key) throw new Error('usage: ubcli redis del my_key')
const res = redisConn.commands('DEL', key)
console.log(res)
} else {
console.error(`Unknown command ${cmd}`)
showUsage()
}
}
module.exports.shortDoc = 'Operations with Redis database for current app'
/**
* Display usage
*/
function showUsage () {
console.log(`
Operations with Redis database for current app
ubcli [-app appName] redis [command] [...args]
Commands:
flush flush (remove all data) a Redis database, used by current app
keys [mask]
show all Redis keys if mask is empty, or keys filtered by mask
Example: ubcli redis keys ub:auth*
get key
get value for key
Example: ubcli redis get my_key
set key
set value for key
Example: ubcli redis set my_key "some value"
del key
remove key from Redis database
`)
}