From c6d56afa11ec60f99e0c7889ae6cb2556c4e1f88 Mon Sep 17 00:00:00 2001 From: Isaac Date: Sun, 30 May 2021 21:14:16 +0100 Subject: [PATCH] Parse JSON if value is string --- src/database/models/category.model.js | 24 ++++++++++++++++++++ src/database/models/guild.model.js | 8 +++++++ src/database/models/panel.model.js | 8 +++++++ src/database/models/survey.model.js | 8 +++++++ src/database/models/survey_response.model.js | 8 +++++++ src/database/models/ticket.model.js | 8 +++++++ 6 files changed, 64 insertions(+) diff --git a/src/database/models/category.model.js b/src/database/models/category.model.js index 3afae98..c346133 100644 --- a/src/database/models/category.model.js +++ b/src/database/models/category.model.js @@ -44,10 +44,26 @@ module.exports = ({ config }, sequelize) => { }, opening_questions: { allowNull: true, + get() { + const raw_value = this.getDataValue('opening_questions'); + return raw_value + ? typeof raw_value === 'string' + ? JSON.parse(raw_value) + : raw_value + : null; + }, type: DataTypes.JSON }, ping: { defaultValue: [], + get() { + const raw_value = this.getDataValue('ping'); + return raw_value + ? typeof raw_value === 'string' + ? JSON.parse(raw_value) + : raw_value + : null; + }, type: DataTypes.JSON }, require_topic: { @@ -56,6 +72,14 @@ module.exports = ({ config }, sequelize) => { }, roles: { allowNull: false, + get() { + const raw_value = this.getDataValue('roles'); + return raw_value + ? typeof raw_value === 'string' + ? JSON.parse(raw_value) + : raw_value + : null; + }, type: DataTypes.JSON }, survey: { diff --git a/src/database/models/guild.model.js b/src/database/models/guild.model.js index 05dbaee..5e95f1d 100644 --- a/src/database/models/guild.model.js +++ b/src/database/models/guild.model.js @@ -49,6 +49,14 @@ module.exports = ({ config }, sequelize) => { }, tags: { defaultValue: {}, + get() { + const raw_value = this.getDataValue('tags'); + return raw_value + ? typeof raw_value === 'string' + ? JSON.parse(raw_value) + : raw_value + : null; + }, type: DataTypes.JSON } }, { tableName: DB_TABLE_PREFIX + 'guilds' }); diff --git a/src/database/models/panel.model.js b/src/database/models/panel.model.js index 87ba74b..aba5b3c 100644 --- a/src/database/models/panel.model.js +++ b/src/database/models/panel.model.js @@ -4,6 +4,14 @@ module.exports = (client, sequelize) => { sequelize.define('Panel', { categories: { allowNull: false, + get() { + const raw_value = this.getDataValue('categories'); + return raw_value + ? typeof raw_value === 'string' + ? JSON.parse(raw_value) + : raw_value + : null; + }, type: DataTypes.JSON }, channel: { diff --git a/src/database/models/survey.model.js b/src/database/models/survey.model.js index 4292930..3a2d6d0 100644 --- a/src/database/models/survey.model.js +++ b/src/database/models/survey.model.js @@ -18,6 +18,14 @@ module.exports = (client, sequelize) => { }, questions: { allowNull: true, + get() { + const raw_value = this.getDataValue('questions'); + return raw_value + ? typeof raw_value === 'string' + ? JSON.parse(raw_value) + : raw_value + : null; + }, type: DataTypes.JSON } }, { tableName: DB_TABLE_PREFIX + 'surveys' }); diff --git a/src/database/models/survey_response.model.js b/src/database/models/survey_response.model.js index 062ff80..379fe79 100644 --- a/src/database/models/survey_response.model.js +++ b/src/database/models/survey_response.model.js @@ -4,6 +4,14 @@ module.exports = (client, sequelize) => { sequelize.define('SurveyResponse', { answers: { allowNull: true, + get() { + const raw_value = this.getDataValue('answers'); + return raw_value + ? typeof raw_value === 'string' + ? JSON.parse(raw_value) + : raw_value + : null; + }, type: DataTypes.JSON }, survey: { diff --git a/src/database/models/ticket.model.js b/src/database/models/ticket.model.js index ef0512e..370e1be 100644 --- a/src/database/models/ticket.model.js +++ b/src/database/models/ticket.model.js @@ -63,6 +63,14 @@ module.exports = (_client, sequelize) => { }, pinned_messages: { defaultValue: [], + get() { + const raw_value = this.getDataValue('pinned_messages'); + return raw_value + ? typeof raw_value === 'string' + ? JSON.parse(raw_value) + : raw_value + : null; + }, type: DataTypes.JSON }, topic: {