Skip to content

Commit f88539d

Browse files
authored
Merge pull request #1 from nabadeep25/dev
✨ IMPROVEMENT: Swagger docs adeed, code restructured etc.
2 parents c67b98e + 8111b52 commit f88539d

File tree

17 files changed

+679
-713
lines changed

17 files changed

+679
-713
lines changed

package-lock.json

Lines changed: 350 additions & 657 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
"name": "typescript-node-sequelize-boilerplate",
33
"version": "0.1.0",
44
"description": "",
5-
"author": "",
6-
"license": " ",
5+
"author": "Nabadeep Thakuria",
6+
"homepage": "https://github.com/nabadeep25/typescript-node-sequelize-boilerplate",
7+
"license": "MIT",
8+
"keywords": ["typescript","node","express","sequelize","mysql","postgres","boilerplate","template","typescript node sequelize boilerplate","typescript node","typescript sequelize boilerplate"],
79
"scripts": {
810
"build-ts": "tsc",
911
"build": "npm run build-ts && npm run lint ",
@@ -40,6 +42,8 @@
4042
"nodemailer": "^6.6.1",
4143
"otplib": "^12.0.1",
4244
"sequelize": "^6.25.3",
45+
"swagger-jsdoc": "^6.2.5",
46+
"swagger-ui-express": "^4.6.0",
4347
"winston": "3.3.3"
4448
},
4549
"devDependencies": {
@@ -54,6 +58,8 @@
5458
"@types/nodemailer": "6.4.0",
5559
"@types/request": "2.48.5",
5660
"@types/request-promise": "4.1.47",
61+
"@types/swagger-jsdoc": "^6.0.1",
62+
"@types/swagger-ui-express": "^4.1.3",
5763
"@types/winston": "2.4.4",
5864
"@typescript-eslint/eslint-plugin": "4.14.2",
5965
"@typescript-eslint/parser": "4.14.2",

src/app.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@ import express from "express";
22
import logger from "morgan";
33
import dbInit from "./model/init";
44
import cors from "cors";
5-
import { customRequest } from "./middleware/requiresUser";
5+
import { customRequest } from "./types/customDefinition";
66
import { deserializeUser } from "./middleware";
7-
import userRouter from "./routes/userRoutes";
8-
import authRouter from "./routes/authRoute";
7+
import appRouter from "./routes/v1";
98

109
// Create Express server
1110
const app = express();
@@ -23,8 +22,7 @@ app.use(deserializeUser);
2322
* Primary app routes.
2423
*/
2524

26-
app.use("/api/auth", authRouter);
27-
app.use("/api/user", userRouter);
25+
app.use("/api/v1", appRouter);
2826

2927
/**
3028
* route to test server
@@ -39,7 +37,7 @@ app.get("/api/", (req: customRequest, res) => {
3937
*/
4038
app.patch("/api/sync", async (req, res) => {
4139
try {
42-
const sync = await dbInit(req.body?.alter);
40+
const sync = await dbInit();
4341
res.status(200).json({ ...sync, error: false });
4442
} catch (err) {
4543
console.log("ERR", err);

src/config/option.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
const swaggerOption = {
2+
definition: {
3+
openapi: "3.0.0",
4+
info: {
5+
title: "typescript-node-sequelize-boilerplate API documentation",
6+
version: "1.0.0",
7+
},
8+
servers: [
9+
{
10+
url: `http://localhost:${process.env.PORT || 3000}/api/v1`,
11+
},
12+
],
13+
components: {
14+
securitySchemes: {
15+
bearerAuth: {
16+
type: "http",
17+
scheme: "bearer",
18+
bearerFormat: "JWT",
19+
},
20+
},
21+
},
22+
},
23+
24+
apis: ["src/routes/v1/*.ts"],
25+
};
26+
export { swaggerOption };

src/controllers/user.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { findOneUser, updateUserById } from "../services/userService";
2-
import { Request, Response } from "express";
2+
import { Response } from "express";
33
import { omit } from "lodash";
4-
import { customRequest } from "../middleware/requiresUser";
4+
import { customRequest } from "../types/customDefinition";
55

66
const omitData = ["password"];
7-
export const updateUser = async (req: Request, res: Response) => {
7+
export const updateUser = async (req: customRequest, res: Response) => {
88
try {
9-
const { userId } = req.params;
9+
const { id: userId } = req.user;
1010

1111
let body = req.body;
1212
body = omit(body, omitData);
@@ -39,7 +39,6 @@ export const getUserData = async (req: customRequest, res: Response) => {
3939
try {
4040
return res.status(200).json({
4141
data: req.user,
42-
4342
error: false,
4443
});
4544
} catch (err) {
@@ -52,3 +51,4 @@ export const getUserData = async (req: customRequest, res: Response) => {
5251
return res.status(400).json({ errorMsg: msg, error: true });
5352
}
5453
};
54+

src/middleware/deserializeUser.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { get } from "lodash";
22
import { verify } from "../util/jwt";
3-
import { Request, Response, NextFunction } from "express";
4-
import { customRequest } from "./requiresUser";
3+
import { Response, NextFunction } from "express";
4+
import { customRequest } from "../types/customDefinition";
55

66
const deserializeUser = async (
77
req: customRequest,

src/middleware/isAdmin.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { get } from "lodash";
22
import { Response, NextFunction } from "express";
3-
import { customRequest } from "./requiresUser";
3+
import { customRequest } from "../types/customDefinition";
44

55
const isAdmin = async (
66
req: customRequest,

src/middleware/requiresUser.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
import { get } from "lodash";
22
import { getUserById } from "../services/userService";
3-
import { Request, Response, NextFunction } from "express";
4-
5-
export interface customRequest extends Request {
6-
user: any;
7-
}
3+
import { Response, NextFunction } from "express";
4+
import { customRequest } from "../types/customDefinition";
85

96
const requireUser = async (
107
req: customRequest,

src/model/init.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ export const modelList = {
1212

1313
/**
1414
* Sync database
15-
* @param alter
15+
1616
* @returns boolean
1717
*/
1818

19-
const dbInit = async (alter: boolean) => {
19+
const dbInit = async () => {
2020
try {
2121
await sequelizeConnection.sync({ alter: isDev });
2222
return { success: true };

src/routes/authRoute.ts

Lines changed: 0 additions & 17 deletions
This file was deleted.

0 commit comments

Comments
 (0)