Skip to content

Commit

Permalink
Documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
TresorRw committed May 29, 2024
1 parent 2bfa091 commit c98bee9
Show file tree
Hide file tree
Showing 19 changed files with 420 additions and 56 deletions.
2 changes: 1 addition & 1 deletion .husky/pre-commit
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
. "$(dirname -- "$0")/_/husky.sh"

npm run lint:fix
# npm run test
npm run test
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"lint:fix": "eslint . --fix",
"build": "babel src --out-dir dist --source-maps inline --copy-files",
"start": "babel-node dist/app.js",
"test": "cross-env NODE_ENV=test npm run db:migrate && npm run db:reset && cross-env NODE_ENV=test PORT=4300 mocha --require @babel/register --exit 'src/tests/**/*.test.js'",
"test": "cross-env NODE_ENV=test npm run db:migrate && cross-env NODE_ENV=test npm run db:reset && cross-env NODE_ENV=test PORT=4300 mocha --require @babel/register --exit 'src/tests/**/*.test.js'",
"test:coverage": " nyc mocha --coverage --recursive --require @babel/polyfill --require @babel/register */tests/*.js --timeout 500000000 --exit",
"coverage": "nyc report --reporter=text-lcov | coveralls",
"db:migrate": "sequelize db:migrate",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,6 @@ module.exports = {
key: "id",
},
},
isReviewd: {
type: Sequelize.BOOLEAN,
defaultValue: false,
},
type: {
type: Sequelize.STRING,
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,13 @@ module.exports = {
key: "id",
},
},
overallReviewId: {
type: Sequelize.UUID,
references: {
model: "tbl_overall_reviews",
key: "id",
},
},
ratings: {
type: Sequelize.INTEGER,
allowNull: false,
Expand Down
7 changes: 7 additions & 0 deletions src/database/models/fieldReview.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,13 @@ const FieldReviewModel = () => {
key: "id",
},
},
overallReviewId: {
type: DataTypes.UUID,
references: {
model: "tbl_overall_reviews",
key: "id",
},
},
ratings: {
type: DataTypes.INTEGER,
allowNull: false,
Expand Down
4 changes: 0 additions & 4 deletions src/database/models/overallReview.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,6 @@ const OverallReviewModel = () => {
key: "id",
},
},
isReviewd: {
type: DataTypes.BOOLEAN,
defaultValue: false,
},
type: {
type: DataTypes.STRING,
},
Expand Down
4 changes: 4 additions & 0 deletions src/database/relationships/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,16 @@ export const associate = () => {

DB.RatingCategory.hasMany(DB.RatingField, {
foreignKey: "categoryId",
as: "ratingFields",
});

DB.RatingField.belongsTo(DB.RatingCategory, {
foreignKey: "categoryId",
as: "ratingCategory",
});

DB.OverallReview.hasMany(DB.FieldReview, {
as: "fieldReviews",
foreignKey: "overallReviewId",
});

Expand All @@ -98,6 +101,7 @@ export const associate = () => {

DB.FieldReview.belongsTo(DB.RatingField, {
foreignKey: "ratingFieldId",
as: "ratingField",
onDelete: "CASCADE",
});
};
4 changes: 4 additions & 0 deletions src/documentation/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import reviews from "./review";
import reviewCycles from "./reviewCycle";
import search from "./search";
import dashboard from "./auth/dashboard";
import ratingCategories from "./ratingCategory";
import ratingFields from "./ratingField";

const defaults = swaggerDoc.paths;

Expand All @@ -26,6 +28,8 @@ const paths = {
...reviewCycles,
...reviews,
...search,
...ratingCategories,
...ratingFields,
};

const config = {
Expand Down
106 changes: 106 additions & 0 deletions src/documentation/ratingCategory/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
import responses from "../responses";

const ratingCategories = {
"/ratingCategories": {
get: {
tags: ["RatingCategories"],
summary: "Get all rating categories",
description:
"Get all categories. Only admin users can get a list of all categories.",
security: [{ JWT: [] }],
parameters: [],
consumes: ["application/json"],
responses,
},
post: {
tags: ["RatingCategories"],
summary: "Create a new rating category",
description:
"Create a new project. Only admin users can create categories.",
security: [{ JWT: [] }],
parameters: [
{
in: "body",
name: "body",
required: true,
schema: {
example: {
name: "Rating category name",
},
},
},
],
consumes: ["application/json"],
responses,
},
},

"/ratingCategories/{id}": {
get: {
tags: ["RatingCategories"],
summary: "Get a rating category",
description: "Get one rating category with its rating fields.",
security: [{ JWT: [] }],
parameters: [
{
in: "path",
name: "id",
required: true,
schema: {
example: "5e5bb69e-26fe-4e61-b4f3-e9a9332066da",
},
},
],
consumes: ["application/json"],
responses,
},
patch: {
tags: ["RatingCategories"],
summary: "Change category name",
description: "Change rating category name",
security: [{ JWT: [] }],
parameters: [
{
in: "path",
name: "id",
required: true,
schema: {
example: "566febd2-d3f3-4ae3-ac76-a5ef5426366d",
},
},
{
in: "body",
name: "body",
required: true,
schema: {
example: {
name: "New Name",
},
},
},
],
consumes: ["application/json"],
responses,
},
delete: {
tags: ["RatingCategories"],
summary: "Delete a rating category",
description: "Delete a rating category. it will delete its rating fields",
security: [{ JWT: [] }],
parameters: [
{
in: "path",
name: "id",
required: true,
schema: {
example: "8a2a4287-fd47-45f9-a1a0-42e24aeeeddz",
},
},
],
consumes: ["application/json"],
responses,
},
},
};

export default ratingCategories;
79 changes: 79 additions & 0 deletions src/documentation/ratingField/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
import responses from "../responses";

const ratingFields = {
"/ratingFields": {
get: {
tags: ["RatingFields"],
summary: "Get all rating fields",
description:
"Get all projects. Only admin users can get a list of all projects.",
security: [{ JWT: [] }],
parameters: [],
consumes: ["application/json"],
responses,
},
post: {
tags: ["RatingFields"],
summary: "Create a new rating field",
description:
"Create a new project. Only admin users can create projects.",
security: [{ JWT: [] }],
parameters: [
{
in: "body",
name: "body",
required: true,
schema: {
example: {
categoryId: "41dcfb3c-9c7f-4829-9752-f0e1694fd6ea",
name: "Rating field name",
},
},
},
],
consumes: ["application/json"],
responses,
},
},

"/ratingFields/{id}": {
get: {
tags: ["RatingFields"],
summary: "Get a rating field",
description: "Get one rating field with its rating fields.",
security: [{ JWT: [] }],
parameters: [
{
in: "path",
name: "id",
required: true,
schema: {
example: "5e5bb69e-26fe-4e61-b4f3-e9a9332066da",
},
},
],
consumes: ["application/json"],
responses,
},
delete: {
tags: ["RatingFields"],
summary: "Delete a rating field",
description: "Delete a rating field. it will delete its rating fields",
security: [{ JWT: [] }],
parameters: [
{
in: "path",
name: "id",
required: true,
schema: {
example: "8a2a4287-fd47-45f9-a1a0-42e24aeeeddz",
},
},
],
consumes: ["application/json"],
responses,
},
},
};

export default ratingFields;
15 changes: 12 additions & 3 deletions src/documentation/review/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ const reviews = {
post: {
tags: ["Reviews"],
summary: "Create new reviews",
description: "Create new reviews.",
description: "Create new review. use the schema below",
security: [{ JWT: [] }],
parameters: [
{
Expand All @@ -14,10 +14,19 @@ const reviews = {
required: true,
schema: {
example: {
comment: "review description",
revieweeId: "5e5bb69e-26fe-4e61-b4f3-e9a9332066da",
reviewCycleId: "5e5bb69e-26fe-4e61-b4f3-e9a9332066da",
description: "review description",
ratings: 2,
fieldReviews: [
{
ratingFieldId: "5e5bb69e-26fe-4e61-b4f3-e9a9332066da",
ratings: 2,
},
{
ratingFieldId: "5e5bb69e-26fe-4e61-b4f3-e9a9332066da",
ratings: 5,
},
],
},
},
},
Expand Down
36 changes: 35 additions & 1 deletion src/restful/controllers/ratingCategoryController.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ const {
findAllRatingCategories,
findRatingCategoryById,
checkRatingCategoryExists,
updateRatingCategoryName,
} = RatingCategoryService;

export default class RatingCategoryController {
Expand All @@ -31,7 +32,7 @@ export default class RatingCategoryController {
});
}
const createCategory = await createRatingCategory(results.output);
return Response.success(res, 200, {
return Response.success(res, 201, {
message: "Rating Category created successfully",
data: createCategory,
});
Expand Down Expand Up @@ -87,4 +88,37 @@ export default class RatingCategoryController {
return Response.error(res, 500, error);
}
}
static async updateRatingCategory(req, res) {
try {
const { id } = req.params;
const results = v.safeParse(ratingCategorySchema, req.body);
if (!results.success) {
return Response.error(res, 400, {
message: "Please correct your inputs",
errors: filterValidationError(results.issues),
});
}
const ratingCategory = await findRatingCategoryById(id);
if (!ratingCategory) {
return Response.error(res, 404, {
message: "Rating Category not found",
});
}
const { name } = results.output;
const exitingCategory = await checkRatingCategoryExists(name);
if (exitingCategory && exitingCategory.id != id) {
return Response.error(res, 409, {
message: "Rating category name already exists",
});
} else {
const updatedCategory = await updateRatingCategoryName(id, name);
return Response.success(res, 200, {
message: "Rating category is updated successfully",
data: updatedCategory,
});
}
} catch (error) {
return Response.error(res, 500, error);
}
}
}
Loading

0 comments on commit c98bee9

Please sign in to comment.