I have a table called user_feedbacks,
For type we have 4 default values - 1-Suggestion, 2-Request, 3-Damage Report, 4-Incident
For status we have 3 default values - 0-open, 1-in progress, 2-closed
I want to show under each type for each status, count of records like below [Required Output],
{
"status": "success",
"code": 200,
"data": {
"1"(Type): {
"0" (status): 20, (total)
"1": 19,
"2": 28
},
"2": {
"0": 20,
"1": 19,
"2": 28
},
"3": {
"0": 20,
"1": 19,
"2": 28
},
"4": {
"0": 20,
"1": 19,
"2": 28
}
}
}
Below is my code,
In feedback.js
static async getFeedbackStats(opts) {
assert.object(opts, 'opts')
assert.func(opts.mysql_db, 'opts.mysql_db')
const { mysql_db } = opts
const result = mysql_db.select('type', 'status', mysql_db.raw('count(status)'))
.from('user_feedbacks')
.groupBy('status', 'type')
return result
}
In handler.js
const assert = require('assert-plus')
const Utils = require('../common/repos/feedbacks')
const Auth = require('../common/auth')
const Logger = require('../common/debug_logger')
async function handler(event, ctx, opts) {
Logger.info('Feedback stats handler has been invoked: %j', event)
const auth = await Auth.authenticate(event)
if (!auth.success){
return { status : 'failed', code : 401}
}
assert('params' in auth, 'auth.params')
assert('auth_ctx' in auth, 'auth.auth_ctx')
assert('user_id' in auth.auth_ctx, 'auth.auth_ctx.user_id')
Logger.info('Feedback stats handler Auth.Params: %j', auth.params)
const result = await Utils.getFeedbackStats(opts)
return { status: 'success', code: 200, data: result }
}
module.exports = { handler }
Above code return below output [Output i return],
{
"status":"success",
"code":200,
"data":[
{
"type":1,
"status":0,
"count(status)":2
},
{
"type":2,
"status":0,
"count(status)":1
},
{
"type":1,
"status":1,
"count(status)":1
},
{
"type":1,
"status":2,
"count(status)":1
}
]
}
Anyone can helps me to get this output as above output i mention?