From b9202bbc10e4f87046fe0793fba38509a5b16852 Mon Sep 17 00:00:00 2001 From: Laxman Maharjan Date: Thu, 29 Jul 2021 19:32:22 +0545 Subject: [PATCH 1/2] introduce cockroachdb --- api/package.json | 1 + api/src/config/config.js | 1 + api/src/config/database.js | 3 +- api/src/controllers/calendarController.js | 2 +- api/src/controllers/collectionController.js | 2 +- api/src/controllers/communityController.js | 2 +- .../controllers/communityGroupController.js | 2 +- api/src/controllers/courseController.js | 2 +- .../controllers/enterpriseUserController.js | 2 +- api/src/controllers/enterprisesController.js | 2 +- api/src/controllers/groupUserController.js | 2 +- api/src/controllers/newsController.js | 2 +- api/src/controllers/questionController.js | 63 ++++++------ api/src/controllers/resourceController.js | 2 +- api/src/controllers/testController.js | 2 +- api/src/controllers/userController.js | 2 +- api/src/controllers/userTestController.js | 2 +- .../20210709110431-alter-user-test-tbl.js | 6 +- .../20210713063557-alter-question-tbl.js | 6 +- ...55-alter-question-tbl-remove-constraint.js | 24 ++--- ...10716081622-alter-question-add-position.js | 6 +- ...20210716090113-create-user-test-answers.js | 12 +-- ...210726102757-alter-questions-constraint.js | 12 ++- api/src/models/calendarModel.js | 2 +- api/src/models/categoryModel.js | 2 +- api/src/models/collectionModel.js | 2 +- api/src/models/communityModel.js | 2 +- api/src/models/index.js | 2 +- api/src/models/questionModel.js | 8 +- api/src/models/resourceModel.js | 2 +- api/src/models/userTestAnswerModel.js | 6 +- api/src/models/userTestModel.js | 2 +- src/actions/questionActions.js | 98 ++++++++++--------- src/actions/userAction.js | 4 +- .../coursesCard/EnrollContainer.jsx | 2 +- src/reducers/questionReducers.js | 76 +++++++------- src/reducers/testReducers.js | 2 +- .../adminCoursePage/AdminCoursePage.jsx | 2 +- src/screens/courses/Courses.jsx | 2 +- src/utils/checkFilledArray.js | 33 +++---- 40 files changed, 204 insertions(+), 203 deletions(-) diff --git a/api/package.json b/api/package.json index 9e4c37445..8d710d720 100644 --- a/api/package.json +++ b/api/package.json @@ -29,6 +29,7 @@ "pg": "^8.5.1", "pg-hstore": "^2.3.3", "sequelize": "^6.6.2", + "sequelize-cockroachdb": "^6.0.1", "sharp": "^0.28.3", "shortid": "^2.2.16" }, diff --git a/api/src/config/config.js b/api/src/config/config.js index d65b5a85c..3e1bbe26b 100644 --- a/api/src/config/config.js +++ b/api/src/config/config.js @@ -6,6 +6,7 @@ module.exports = { password: process.env.DATABASE_PASSWORD, database: process.env.DATABASE_NAME, host: process.env.DATABASE_HOST, + port: process.env.DATABASE_PORT || 5432, dialect: 'postgres' } } diff --git a/api/src/config/database.js b/api/src/config/database.js index 53022da4a..4b34941fb 100644 --- a/api/src/config/database.js +++ b/api/src/config/database.js @@ -1,6 +1,7 @@ -const { Sequelize } = require('sequelize') +const { Sequelize } = process.env.DB === 'cockroach' ? require('sequelize-cockroachdb') : require('sequelize') module.exports = new Sequelize(process.env.DATABASE_NAME, process.env.DATABASE_USERNAME, process.env.DATABASE_PASSWORD, { host: process.env.DATABASE_HOST, + port: process.env.DATABASE_PORT || 5432, dialect: 'postgres' }) diff --git a/api/src/controllers/calendarController.js b/api/src/controllers/calendarController.js index e5948af08..54bdb498a 100644 --- a/api/src/controllers/calendarController.js +++ b/api/src/controllers/calendarController.js @@ -1,5 +1,5 @@ const Calendar = require('../models/calendarModel') -const Sequelize = require('sequelize') +const Sequelize = process.env.DB === 'cockroach' ? require('sequelize-cockroachdb') : require('sequelize') const Op = Sequelize.Op // @desc Fetch all calendars events diff --git a/api/src/controllers/collectionController.js b/api/src/controllers/collectionController.js index 9a5fb4c8a..0a3da1ecd 100644 --- a/api/src/controllers/collectionController.js +++ b/api/src/controllers/collectionController.js @@ -1,5 +1,5 @@ const Collection = require('../models/collectionModel') -const Sequelize = require('sequelize') +const Sequelize = process.env.DB === 'cockroach' ? require('sequelize-cockroachdb') : require('sequelize') const Op = Sequelize.Op // @desc Fetch all collection diff --git a/api/src/controllers/communityController.js b/api/src/controllers/communityController.js index 4ccafa410..577068872 100644 --- a/api/src/controllers/communityController.js +++ b/api/src/controllers/communityController.js @@ -1,5 +1,5 @@ const db = require('../models') -const Sequelize = require('sequelize') +const Sequelize = process.env.DB === 'cockroach' ? require('sequelize-cockroachdb') : require('sequelize') const { sequelize } = require('../models') const Op = Sequelize.Op const { changeFormat } = require('../helpers/filehelpers') diff --git a/api/src/controllers/communityGroupController.js b/api/src/controllers/communityGroupController.js index 7593fd14f..4e8ffe67f 100644 --- a/api/src/controllers/communityGroupController.js +++ b/api/src/controllers/communityGroupController.js @@ -1,4 +1,4 @@ -const Sequelize = require('sequelize') +const Sequelize = process.env.DB === 'cockroach' ? require('sequelize-cockroachdb') : require('sequelize') const Op = Sequelize.Op const db = require('../models') const { changeFormat } = require('../helpers/filehelpers') diff --git a/api/src/controllers/courseController.js b/api/src/controllers/courseController.js index 737237dc6..1646ea688 100644 --- a/api/src/controllers/courseController.js +++ b/api/src/controllers/courseController.js @@ -1,4 +1,4 @@ -const Sequelize = require('sequelize') +const Sequelize = process.env.DB === 'cockroach' ? require('sequelize-cockroachdb') : require('sequelize') const Op = Sequelize.Op const db = require('../models') const NotFoundError = require('../errors/notFoundError') diff --git a/api/src/controllers/enterpriseUserController.js b/api/src/controllers/enterpriseUserController.js index b22720b11..23d005c4d 100644 --- a/api/src/controllers/enterpriseUserController.js +++ b/api/src/controllers/enterpriseUserController.js @@ -1,4 +1,4 @@ -const { Op } = require('sequelize') +const { Op } = process.env.DB === 'cockroach' ? require('sequelize-cockroachdb') : require('sequelize') const db = require('../models') // @desc Get the enterprises-users diff --git a/api/src/controllers/enterprisesController.js b/api/src/controllers/enterprisesController.js index ecc1a2409..413fe68a9 100644 --- a/api/src/controllers/enterprisesController.js +++ b/api/src/controllers/enterprisesController.js @@ -1,4 +1,4 @@ -const Sequelize = require('sequelize') +const Sequelize = process.env.DB === 'cockroach' ? require('sequelize-cockroachdb') : require('sequelize') const Op = Sequelize.Op const db = require('../models') const { changeFormat } = require('../helpers/filehelpers') diff --git a/api/src/controllers/groupUserController.js b/api/src/controllers/groupUserController.js index 18bf3fbb2..54074080e 100644 --- a/api/src/controllers/groupUserController.js +++ b/api/src/controllers/groupUserController.js @@ -1,4 +1,4 @@ -const { Op } = require('sequelize') +const { Op } = process.env.DB === 'cockroach' ? require('sequelize-cockroachdb') : require('sequelize') const db = require('../models') // @desc Get the groups-users diff --git a/api/src/controllers/newsController.js b/api/src/controllers/newsController.js index ace3a6066..b1904de7f 100644 --- a/api/src/controllers/newsController.js +++ b/api/src/controllers/newsController.js @@ -1,4 +1,4 @@ -const Sequelize = require('sequelize') +const Sequelize = process.env.DB === 'cockroach' ? require('sequelize-cockroachdb') : require('sequelize') const db = require('../models') const Op = Sequelize.Op const { changeFormat } = require('../helpers/filehelpers') diff --git a/api/src/controllers/questionController.js b/api/src/controllers/questionController.js index a0f5b0805..9cc414014 100644 --- a/api/src/controllers/questionController.js +++ b/api/src/controllers/questionController.js @@ -1,6 +1,6 @@ // const Question = require('../models/questionModel') const db = require('../models/index') -const Sequelize = require('sequelize') +const Sequelize = process.env.DB === 'cockroach' ? require('sequelize-cockroachdb') : require('sequelize') const Op = Sequelize.Op const sequelize = require('../config/database.js') const { fn, col } = sequelize @@ -23,31 +23,29 @@ const getQuestions = (req, res) => { const getLessonQuestions = async (req, res) => { try { const pageSize = 10 - const page = Number(req.query.pageNumber) || 0 - const order = req.query.order || 'ASC' - const ordervalue = order && [['question', order]] - - const test = await db.Test.findOne({where: {lessonId: req.params.id}}); + const page = Number(req.query.pageNumber) || 0 + const order = req.query.order || 'ASC' + const ordervalue = order && [['question', order]] - if(!test) return res.json({message: 'test doesn\'t exist.'}) + const test = await db.Test.findOne({ where: { lessonId: req.params.id } }) - const newquestions = await db.Question.findAll({ offset: page, limit: pageSize, order: [['position', "ASC"]], where: {testId: test.id} }) + if (!test) return res.json({ message: 'test doesn\'t exist.' }) - const questions = newquestions.map(item => { - if(item.type === "mcq") { - item.options = item.options.filter(el => el !== item.answer) - } - return item; - }) + const newquestions = await db.Question.findAll({ offset: page, limit: pageSize, order: [['position', 'ASC']], where: { testId: test.id } }) - res.json({ questions, page, pageSize }).status(200) + const questions = newquestions.map(item => { + if (item.type === 'mcq') { + item.options = item.options.filter(el => el !== item.answer) + } + return item + }) + res.json({ questions, page, pageSize }).status(200) } catch (error) { - res.json(error); + res.json(error) } } - // randomize the answers function randomAnswer (array) { let currentIndex = array.length; let temporaryValue; let randomIndex @@ -71,7 +69,7 @@ const getTestQuestions = (req, res) => { db.Question.findAll({ offset: page, limit: pageSize, - order: [['position', "ASC"]], + order: [['position', 'ASC']], where: { testId: req.params.id }, @@ -79,9 +77,8 @@ const getTestQuestions = (req, res) => { }) .then(questions => { if (questions) { - questions.forEach(item => { - if(item.type === "mcq") randomAnswer(item.options) + if (item.type === 'mcq') randomAnswer(item.options) }) // let newOptions = randomArrayShuffle(options); @@ -117,26 +114,24 @@ const addQuestion = (req, res) => { // @route PUT /api/question/:id // @access Public const updateQuestion = async (req, res) => { - try { - const { - question, answer, options, testId, type - } = req.body - const id = req.params.id + const { + question, answer, options, testId, type + } = req.body + const id = req.params.id - const questionExist = await db.Question.findByPk(id); + const questionExist = await db.Question.findByPk(id) - if(!questionExist) return res.json({message: 'Question doesn\'t exist'}); + if (!questionExist) return res.json({ message: 'Question doesn\'t exist' }) - if(questionExist.type === "subjective") { - await db.Question.update({question, testId, type}, {where: {id}}) - return res.json({message: 'Question updated !!!'}).status(200) - } - - await db.Question.update({question, answer, options: [...options, answer], testId, type}, {where: {id}}) + if (questionExist.type === 'subjective') { + await db.Question.update({ question, testId, type }, { where: { id } }) + return res.json({ message: 'Question updated !!!' }).status(200) + } - return res.json({message: 'Question updated !!!'}).status(200) + await db.Question.update({ question, answer, options: [...options, answer], testId, type }, { where: { id } }) + return res.json({ message: 'Question updated !!!' }).status(200) } catch (error) { res.json(error) } diff --git a/api/src/controllers/resourceController.js b/api/src/controllers/resourceController.js index 646f1e7bf..c9a5278ed 100644 --- a/api/src/controllers/resourceController.js +++ b/api/src/controllers/resourceController.js @@ -1,5 +1,5 @@ const Resource = require('../models/resourceModel.js') -const Sequelize = require('sequelize') +const Sequelize = process.env.DB === 'cockroach' ? require('sequelize-cockroachdb') : require('sequelize') const Op = Sequelize.Op const { changeFormat } = require('../helpers/filehelpers') diff --git a/api/src/controllers/testController.js b/api/src/controllers/testController.js index 13f6987b3..46e8c1d09 100644 --- a/api/src/controllers/testController.js +++ b/api/src/controllers/testController.js @@ -1,4 +1,4 @@ -const Sequelize = require('sequelize') +const Sequelize = process.env.DB === 'cockroach' ? require('sequelize-cockroachdb') : require('sequelize') const Op = Sequelize.Op const db = require('../models') // @desc Fetch all tests diff --git a/api/src/controllers/userController.js b/api/src/controllers/userController.js index 6285f710d..5d1be6c56 100644 --- a/api/src/controllers/userController.js +++ b/api/src/controllers/userController.js @@ -2,7 +2,7 @@ const generateToken = require('../utils/generateToken.js') const db = require('../models') const Amplify = require('aws-amplify').Amplify const Auth = require('aws-amplify').Auth -const Sequelize = require('sequelize') +const Sequelize = process.env.DB === 'cockroach' ? require('sequelize-cockroachdb') : require('sequelize') // const User = require('../models/userModel.js') // const LocalAuth = require('../models/localAuthModel.js') const Op = Sequelize.Op diff --git a/api/src/controllers/userTestController.js b/api/src/controllers/userTestController.js index ab55bfd0d..3207cf14d 100644 --- a/api/src/controllers/userTestController.js +++ b/api/src/controllers/userTestController.js @@ -1,5 +1,5 @@ const db = require('../models/index') -const Sequelize = require('sequelize') +const Sequelize = process.env.DB === 'cockroach' ? require('sequelize-cockroachdb') : require('sequelize') // @desc Fetch all tests // @route GET /api/user_tests/lesson/:lessonId diff --git a/api/src/migrations/20210709110431-alter-user-test-tbl.js b/api/src/migrations/20210709110431-alter-user-test-tbl.js index 8a0f71847..17fa192c4 100644 --- a/api/src/migrations/20210709110431-alter-user-test-tbl.js +++ b/api/src/migrations/20210709110431-alter-user-test-tbl.js @@ -1,4 +1,4 @@ -'use strict'; +'use strict' module.exports = { up: async (queryInterface, Sequelize) => { @@ -11,7 +11,7 @@ module.exports = { }, down: async (queryInterface, Sequelize) => { - await queryInterface.removeColumn('users_tests', 'total_marks') + await queryInterface.removeColumn('users_tests', 'total_marks') await queryInterface.removeColumn('users_tests', 'is_passed') } -}; +} diff --git a/api/src/migrations/20210713063557-alter-question-tbl.js b/api/src/migrations/20210713063557-alter-question-tbl.js index 16a9a472a..afde7c77d 100644 --- a/api/src/migrations/20210713063557-alter-question-tbl.js +++ b/api/src/migrations/20210713063557-alter-question-tbl.js @@ -1,8 +1,8 @@ -'use strict'; +'use strict' module.exports = { up: async (queryInterface, Sequelize) => { - await queryInterface.addColumn('questions', 'type', { + await queryInterface.addColumn('questions', 'type', { type: Sequelize.STRING }) }, @@ -10,4 +10,4 @@ module.exports = { down: async (queryInterface, Sequelize) => { await queryInterface.removeColumn('questions', 'type') } -}; +} diff --git a/api/src/migrations/20210713065555-alter-question-tbl-remove-constraint.js b/api/src/migrations/20210713065555-alter-question-tbl-remove-constraint.js index 86cd0b02e..6cee42ca4 100644 --- a/api/src/migrations/20210713065555-alter-question-tbl-remove-constraint.js +++ b/api/src/migrations/20210713065555-alter-question-tbl-remove-constraint.js @@ -1,16 +1,16 @@ -'use strict'; +'use strict' module.exports = { up: async (queryInterface, Sequelize) => { - await queryInterface.changeColumn('questions', "answer", { + await queryInterface.changeColumn('questions', 'answer', { type: Sequelize.TEXT, - allowNull: true + allowNull: true }) - await queryInterface.changeColumn('questions', "options", { + await queryInterface.changeColumn('questions', 'options', { type: Sequelize.ARRAY(Sequelize.TEXT), - allowNull: true + allowNull: true }) - await queryInterface.changeColumn('questions', "question", { + await queryInterface.changeColumn('questions', 'question', { type: Sequelize.TEXT, allowNull: false, unique: false @@ -18,18 +18,18 @@ module.exports = { }, down: async (queryInterface, Sequelize) => { - await queryInterface.changeColumn('questions', "answer", { + await queryInterface.changeColumn('questions', 'answer', { type: Sequelize.TEXT, - allowNull: false + allowNull: false }) - await queryInterface.changeColumn('questions', "options", { + await queryInterface.changeColumn('questions', 'options', { type: Sequelize.ARRAY(Sequelize.TEXT), - allowNull: false + allowNull: false }) - await queryInterface.changeColumn('questions', "question", { + await queryInterface.changeColumn('questions', 'question', { type: Sequelize.TEXT, allowNull: false, unique: true }) } -}; +} diff --git a/api/src/migrations/20210716081622-alter-question-add-position.js b/api/src/migrations/20210716081622-alter-question-add-position.js index 18f46b7d6..16b1cd4ed 100644 --- a/api/src/migrations/20210716081622-alter-question-add-position.js +++ b/api/src/migrations/20210716081622-alter-question-add-position.js @@ -1,8 +1,8 @@ -'use strict'; +'use strict' module.exports = { up: async (queryInterface, Sequelize) => { - await queryInterface.addColumn('questions', 'position', { + await queryInterface.addColumn('questions', 'position', { type: Sequelize.INTEGER }) }, @@ -10,4 +10,4 @@ module.exports = { down: async (queryInterface, Sequelize) => { await queryInterface.removeColumn('questions', 'position') } -}; +} diff --git a/api/src/migrations/20210716090113-create-user-test-answers.js b/api/src/migrations/20210716090113-create-user-test-answers.js index dd4043d90..a7e86fe07 100644 --- a/api/src/migrations/20210716090113-create-user-test-answers.js +++ b/api/src/migrations/20210716090113-create-user-test-answers.js @@ -1,4 +1,4 @@ -'use strict'; +'use strict' module.exports = { up: async (queryInterface, Sequelize) => { @@ -12,21 +12,21 @@ module.exports = { type: Sequelize.INTEGER, allowNull: false, references: { - model: "users_tests", + model: 'users_tests', key: 'id' } }, question: { type: Sequelize.TEXT, - allowNull: false, + allowNull: false }, answer: { - type: Sequelize.TEXT, + type: Sequelize.TEXT } }) }, down: async (queryInterface, Sequelize) => { - await queryInterface.dropTable('user_test_answers'); + await queryInterface.dropTable('user_test_answers') } -}; +} diff --git a/api/src/migrations/20210726102757-alter-questions-constraint.js b/api/src/migrations/20210726102757-alter-questions-constraint.js index 06f9f33f0..717b16a91 100644 --- a/api/src/migrations/20210726102757-alter-questions-constraint.js +++ b/api/src/migrations/20210726102757-alter-questions-constraint.js @@ -2,13 +2,15 @@ module.exports = { up: async (queryInterface, Sequelize) => { - await queryInterface.removeConstraint('questions', 'questions_question_key') + await queryInterface.removeIndex('questions', ['question'], { + indexName: 'questions_question_key', + indicesType: 'UNIQUE' + }) }, down: async (queryInterface, Sequelize) => { - await queryInterface.addConstraint('questions', { - fields: ['question'], - type: 'unique', - name: 'questions_question_key' + await queryInterface.addIndex('questions', ['question'], { + indexName: 'questions_question_key', + indicesType: 'UNIQUE' }) } } diff --git a/api/src/models/calendarModel.js b/api/src/models/calendarModel.js index 57573d36e..716315597 100644 --- a/api/src/models/calendarModel.js +++ b/api/src/models/calendarModel.js @@ -1,4 +1,4 @@ -const Sequelize = require('sequelize') +const Sequelize = process.env.DB === 'cockroach' ? require('sequelize-cockroachdb') : require('sequelize') const db = require('../config/database.js') const Calendar = db.define( diff --git a/api/src/models/categoryModel.js b/api/src/models/categoryModel.js index e0dcddc6a..f7b6919f2 100644 --- a/api/src/models/categoryModel.js +++ b/api/src/models/categoryModel.js @@ -1,4 +1,4 @@ -const Sequelize = require('sequelize') +const Sequelize = process.env.DB === 'cockroach' ? require('sequelize-cockroachdb') : require('sequelize') const db = require('../config/database.js') const Category = db.define( diff --git a/api/src/models/collectionModel.js b/api/src/models/collectionModel.js index 50adce827..68878226a 100644 --- a/api/src/models/collectionModel.js +++ b/api/src/models/collectionModel.js @@ -1,4 +1,4 @@ -const Sequelize = require('sequelize') +const Sequelize = process.env.DB === 'cockroach' ? require('sequelize-cockroachdb') : require('sequelize') const db = require('../config/database.js') const Collection = db.define( diff --git a/api/src/models/communityModel.js b/api/src/models/communityModel.js index cea1df130..77960a7df 100644 --- a/api/src/models/communityModel.js +++ b/api/src/models/communityModel.js @@ -1,4 +1,4 @@ -const Sequelize = require('sequelize') +const Sequelize = process.env.DB === 'cockroach' ? require('sequelize-cockroachdb') : require('sequelize') const db = require('../config/database') const { sequelize } = require('./index') diff --git a/api/src/models/index.js b/api/src/models/index.js index 76a082af8..b69bcbc38 100644 --- a/api/src/models/index.js +++ b/api/src/models/index.js @@ -1,6 +1,6 @@ const fs = require('fs') const path = require('path') -const Sequelize = require('sequelize') +const Sequelize = process.env.DB === 'cockroach' ? require('sequelize-cockroachdb') : require('sequelize') const sequelize = require('../config/database') const basename = path.basename(__filename) const env = process.env.NODE_ENV || 'development' diff --git a/api/src/models/questionModel.js b/api/src/models/questionModel.js index be68c9ff7..8eead38aa 100644 --- a/api/src/models/questionModel.js +++ b/api/src/models/questionModel.js @@ -9,12 +9,12 @@ module.exports = (sequelize, DataTypes) => { type: DataTypes.TEXT }, answer: { - type: DataTypes.TEXT, - + type: DataTypes.TEXT + }, options: { - type: DataTypes.ARRAY(DataTypes.TEXT), - + type: DataTypes.ARRAY(DataTypes.TEXT) + }, testId: { type: DataTypes.INTEGER, diff --git a/api/src/models/resourceModel.js b/api/src/models/resourceModel.js index c03a96193..f766b1a93 100644 --- a/api/src/models/resourceModel.js +++ b/api/src/models/resourceModel.js @@ -1,4 +1,4 @@ -const Sequelize = require('sequelize') +const Sequelize = process.env.DB === 'cockroach' ? require('sequelize-cockroachdb') : require('sequelize') const db = require('../config/database.js') const Resources = db.define('resources', diff --git a/api/src/models/userTestAnswerModel.js b/api/src/models/userTestAnswerModel.js index c4e136c36..406081bbf 100644 --- a/api/src/models/userTestAnswerModel.js +++ b/api/src/models/userTestAnswerModel.js @@ -7,11 +7,11 @@ module.exports = (sequelize, DataTypes) => { }, userTestId: DataTypes.INTEGER, question: { - type: DataTypes.TEXT, - allowNull: false + type: DataTypes.TEXT, + allowNull: false }, answer: { - type: DataTypes.TEXT, + type: DataTypes.TEXT } }, { timestamps: false }) diff --git a/api/src/models/userTestModel.js b/api/src/models/userTestModel.js index 1e5ad2ba6..461636714 100644 --- a/api/src/models/userTestModel.js +++ b/api/src/models/userTestModel.js @@ -26,7 +26,7 @@ module.exports = (sequelize, DataTypes) => { foreignKey: 'testId' }) UserTest.hasMany(models.UserTestAnswer, { - foreignKey: "userTestId" + foreignKey: 'userTestId' }) } diff --git a/src/actions/questionActions.js b/src/actions/questionActions.js index db4d56c1a..c5a466367 100644 --- a/src/actions/questionActions.js +++ b/src/actions/questionActions.js @@ -1,13 +1,15 @@ -import axios from "axios" -import { QUESTION_DELETE_FAIL, QUESTION_DELETE_REQUEST, QUESTION_DELETE_SUCCESS, QUESTION_LIST_FAIL, QUESTION_LIST_REQUEST, QUESTION_LIST_SUCCESS, QUESTION_UPDATE_FAIL, - QUESTION_UPDATE_REQUEST, QUESTION_UPDATE_SUCCESS } from "../constants/questionConstants" +import axios from 'axios' +import { + QUESTION_DELETE_FAIL, QUESTION_DELETE_REQUEST, QUESTION_DELETE_SUCCESS, QUESTION_LIST_FAIL, QUESTION_LIST_REQUEST, QUESTION_LIST_SUCCESS, QUESTION_UPDATE_FAIL, + QUESTION_UPDATE_REQUEST, QUESTION_UPDATE_SUCCESS +} from '../constants/questionConstants' export const listQuestions = (lessonId) => async ( dispatch ) => { try { dispatch({ type: QUESTION_LIST_REQUEST }) - const { data } = await axios.get(`${process.env.REACT_APP_API_BASE_URL}/api/questions/lesson/${lessonId}`) + const { data } = await axios.get(`${process.env.REACT_APP_API_BASE_URL}/api/questions/lesson/${lessonId}`) dispatch({ type: QUESTION_LIST_SUCCESS, payload: data }) } catch (error) { dispatch({ @@ -20,53 +22,53 @@ export const listQuestions = (lessonId) => async ( } } -export const deleteSingleQuestion = ({deleteId, lessonId}) => async (dispatch, getState) => { - try { - dispatch({ type: QUESTION_DELETE_REQUEST }) - console.log(deleteId) +export const deleteSingleQuestion = ({ deleteId, lessonId }) => async (dispatch, getState) => { + try { + dispatch({ type: QUESTION_DELETE_REQUEST }) + console.log(deleteId) - const data = await axios.delete(`${process.env.REACT_APP_API_BASE_URL}/api/questions/${deleteId}`) - dispatch({ - type: QUESTION_DELETE_SUCCESS, - payload: data - }) - // console.log() - document.location.href = `/admin/edit-test/${lessonId}` - } catch (error) { - const message = + const data = await axios.delete(`${process.env.REACT_APP_API_BASE_URL}/api/questions/${deleteId}`) + dispatch({ + type: QUESTION_DELETE_SUCCESS, + payload: data + }) + // console.log() + document.location.href = `/admin/edit-test/${lessonId}` + } catch (error) { + const message = error.response && error.response.data.message - ? error.response.data.message - : error.message - dispatch({ type: QUESTION_DELETE_FAIL, payload: message }) - } + ? error.response.data.message + : error.message + dispatch({ type: QUESTION_DELETE_FAIL, payload: message }) + } } export const updateQuestion = (newQuestions) => async (dispatch) => { - try { - dispatch({ type: QUESTION_UPDATE_REQUEST }) - const {id, question, answer, options, testId, type, lessonId} = newQuestions - const data = await axios.put(`${process.env.REACT_APP_API_BASE_URL}/api/questions/${id}`, { - question, - answer, - options, - testId, - type - }) - - dispatch({ - type: QUESTION_UPDATE_SUCCESS, - payload: data - }) - console.log(lessonId) + try { + dispatch({ type: QUESTION_UPDATE_REQUEST }) + const { id, question, answer, options, testId, type, lessonId } = newQuestions + const data = await axios.put(`${process.env.REACT_APP_API_BASE_URL}/api/questions/${id}`, { + question, + answer, + options, + testId, + type + }) - document.location.href = `/admin/edit-test/${lessonId}` - } catch (error) { - const message = error.response && error.response.data.message - ? error.response.data.message - : error.message - dispatch({ - type: QUESTION_UPDATE_FAIL, - payload: message - }) - } -} \ No newline at end of file + dispatch({ + type: QUESTION_UPDATE_SUCCESS, + payload: data + }) + console.log(lessonId) + + document.location.href = `/admin/edit-test/${lessonId}` + } catch (error) { + const message = error.response && error.response.data.message + ? error.response.data.message + : error.message + dispatch({ + type: QUESTION_UPDATE_FAIL, + payload: message + }) + } +} diff --git a/src/actions/userAction.js b/src/actions/userAction.js index a89269810..d28ef5dbb 100644 --- a/src/actions/userAction.js +++ b/src/actions/userAction.js @@ -213,7 +213,7 @@ export const checkAndUpdateToken = () => async (dispatch) => { } }).catch((data) => { return tokenFailure(dispatch, 'Unauthorized') - /*const message = data.response && data.response.data.name ? data.response.data.name : data.message + /* const message = data.response && data.response.data.name ? data.response.data.name : data.message if (message === 'TokenExpired') { if (process.env.REACT_APP_AUTH_METHOD === 'cognito') { Auth.currentSession().then((res) => { @@ -242,7 +242,7 @@ export const checkAndUpdateToken = () => async (dispatch) => { } } else { return tokenFailure(dispatch, 'Unauthorized') - }*/ + } */ }) } diff --git a/src/components/coursesCard/EnrollContainer.jsx b/src/components/coursesCard/EnrollContainer.jsx index f02dc06d7..f8d095f24 100644 --- a/src/components/coursesCard/EnrollContainer.jsx +++ b/src/components/coursesCard/EnrollContainer.jsx @@ -31,7 +31,7 @@ const EnrollContainer = ({ item, userInfo, setPurchaseModal }) => { {isEnroll === true && enrollCourseId === item.id ? ( diff --git a/src/reducers/questionReducers.js b/src/reducers/questionReducers.js index 0e42acecc..6dd039da3 100644 --- a/src/reducers/questionReducers.js +++ b/src/reducers/questionReducers.js @@ -1,46 +1,46 @@ -import { QUESTION_DELETE_FAIL, QUESTION_DELETE_REQUEST, QUESTION_DELETE_SUCCESS, QUESTION_LIST_FAIL, QUESTION_LIST_REQUEST, QUESTION_LIST_SUCCESS, QUESTION_UPDATE_FAIL, QUESTION_UPDATE_REQUEST, QUESTION_UPDATE_SUCCESS } from "../constants/questionConstants" +import { QUESTION_DELETE_FAIL, QUESTION_DELETE_REQUEST, QUESTION_DELETE_SUCCESS, QUESTION_LIST_FAIL, QUESTION_LIST_REQUEST, QUESTION_LIST_SUCCESS, QUESTION_UPDATE_FAIL, QUESTION_UPDATE_REQUEST, QUESTION_UPDATE_SUCCESS } from '../constants/questionConstants' export const questionDeleteReducer = (state = {}, action) => { - switch (action.type) { - case QUESTION_DELETE_REQUEST: - return { ...state, loading: true, success: false } - case QUESTION_DELETE_SUCCESS: - return { loading: false, success: true } - case QUESTION_DELETE_FAIL: - return { loading: false, error: action.payload } - default: - return state - } + switch (action.type) { + case QUESTION_DELETE_REQUEST: + return { ...state, loading: true, success: false } + case QUESTION_DELETE_SUCCESS: + return { loading: false, success: true } + case QUESTION_DELETE_FAIL: + return { loading: false, error: action.payload } + default: + return state + } } export const questionUpdateReducer = (state = {}, action) => { - switch (action.type) { - case QUESTION_UPDATE_REQUEST: - return { ...state, loading: true, success: false } - case QUESTION_UPDATE_SUCCESS: - return { loading: false, success: true } - case QUESTION_UPDATE_FAIL: - return { loading: false, error: action.payload } - default: - return state - } + switch (action.type) { + case QUESTION_UPDATE_REQUEST: + return { ...state, loading: true, success: false } + case QUESTION_UPDATE_SUCCESS: + return { loading: false, success: true } + case QUESTION_UPDATE_FAIL: + return { loading: false, error: action.payload } + default: + return state + } } export const questionListReducer = (state = { fetchedQuestions: [] }, action) => { - switch (action.type) { - case QUESTION_LIST_REQUEST: - return { loading: true, QUESTION: [] } - case QUESTION_LIST_SUCCESS: - return { - loading: false, - fetchedQuestions: action.payload.questions, - pages: action.payload.pages, - page: action.payload.page, - totalPages: action.payload.totalPages - } - case QUESTION_LIST_FAIL: - return { loading: false, error: action.payload } - default: - return state - } -} \ No newline at end of file + switch (action.type) { + case QUESTION_LIST_REQUEST: + return { loading: true, QUESTION: [] } + case QUESTION_LIST_SUCCESS: + return { + loading: false, + fetchedQuestions: action.payload.questions, + pages: action.payload.pages, + page: action.payload.page, + totalPages: action.payload.totalPages + } + case QUESTION_LIST_FAIL: + return { loading: false, error: action.payload } + default: + return state + } +} diff --git a/src/reducers/testReducers.js b/src/reducers/testReducers.js index 08d425531..c9b40e014 100644 --- a/src/reducers/testReducers.js +++ b/src/reducers/testReducers.js @@ -50,4 +50,4 @@ export const testQuestionEditReducer = (state = {}, action) => { default: return state } -} \ No newline at end of file +} diff --git a/src/screens/courseManager/adminCoursePage/AdminCoursePage.jsx b/src/screens/courseManager/adminCoursePage/AdminCoursePage.jsx index 14752257d..dad0cd395 100644 --- a/src/screens/courseManager/adminCoursePage/AdminCoursePage.jsx +++ b/src/screens/courseManager/adminCoursePage/AdminCoursePage.jsx @@ -23,7 +23,7 @@ const AdminCoursePage = () => { if (isLoading) { return Loading.. } - console.log(data); + console.log(data) const creator = data?.data?.creator const userId = userInfo.id if (userId !== creator) { diff --git a/src/screens/courses/Courses.jsx b/src/screens/courses/Courses.jsx index 358d16b65..6c8f49d76 100644 --- a/src/screens/courses/Courses.jsx +++ b/src/screens/courses/Courses.jsx @@ -31,7 +31,7 @@ const Courses = () => { return Loading... } - function createNewCourseFunc() { + function createNewCourseFunc () { setCreateNewCourse(true) setCreateCourse(false) } diff --git a/src/utils/checkFilledArray.js b/src/utils/checkFilledArray.js index d9b42e0f4..ae2deb2db 100644 --- a/src/utils/checkFilledArray.js +++ b/src/utils/checkFilledArray.js @@ -1,19 +1,18 @@ -export function checkArrayForFilledValue(arr) { - let empty = 0; - arr.forEach(el => { - if(el.type === "subjective") { - if(!el.question) empty++ - } - - if(el.type === "mcq") { - console.log(el.type) - if (!el.question || !el.answer || el.options.includes('')) empty++ - } +export function checkArrayForFilledValue (arr) { + let empty = 0 + arr.forEach(el => { + if (el.type === 'subjective') { + if (!el.question) empty++ + } - }) - console.log(empty) - if (empty === 0) { - return true; + if (el.type === 'mcq') { + console.log(el.type) + if (!el.question || !el.answer || el.options.includes('')) empty++ } - return false; -} \ No newline at end of file + }) + console.log(empty) + if (empty === 0) { + return true + } + return false +} From bf25fb1725b7df255e667f5b5b20f7be01896a48 Mon Sep 17 00:00:00 2001 From: Laxman Maharjan Date: Thu, 29 Jul 2021 19:34:44 +0545 Subject: [PATCH 2/2] env update --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b7f762607..54505b85a 100644 --- a/README.md +++ b/README.md @@ -45,8 +45,10 @@ DATABASE_NAME= DATABASE_USERNAME= DATABASE_PASSWORD= DATABASE_HOST= +DATABASE_PORT= +DATABASE_DB=<**cockroach** or **postgres** | default **postgres**> FRONTEND_URL= -AUTH_METHOD=<**local** or **cognito**> +AUTH_METHOD=<**local** or **cognito** | default **local**> COGNITO_REGION= COGNITO_POOL_ID= COGNITO_CLIENT_ID=