Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโ€™ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[refactor] Change database to MongoDB #119

Merged
merged 92 commits into from
Mar 3, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
40ffa01
refactor: add mongoose modules
holmir97 Feb 20, 2022
5e074b2
refactor: add interfaces
holmir97 Feb 20, 2022
55b082c
refactor: create book interface
holmir97 Feb 20, 2022
de9f2a2
refactor: create review interface
holmir97 Feb 20, 2022
cbbdfda
refactor: create book interface
holmir97 Feb 20, 2022
4858acd
refactor: connect DB indexing
holmir97 Feb 20, 2022
dbc9d95
refactor: delete sequelize and connect mongoDB
holmir97 Feb 20, 2022
bec3e6b
refactor: delete sequelize and connect mongoDB
holmir97 Feb 20, 2022
b620d0c
refactor: delete postgreSQL index
holmir97 Feb 20, 2022
86c12e0
refactor: add mongoURI config
holmir97 Feb 20, 2022
a816410
refactor: delete postgreSQL models
holmir97 Feb 20, 2022
dccdb1a
refactor: delete postgreSQL models
holmir97 Feb 20, 2022
c701fa1
refactor: connect DB indexing
holmir97 Feb 20, 2022
db21ca8
refactor: create mongoDB models
holmir97 Feb 20, 2022
29554a2
refactor: follow coding convention
holmir97 Feb 20, 2022
9f383b3
refactor: create book interface
holmir97 Feb 20, 2022
0d1c6f6
refactor: create review interface
holmir97 Feb 20, 2022
5bdcbb3
refactor: create book model
holmir97 Feb 20, 2022
30ca5e0
refactor: create review model
holmir97 Feb 20, 2022
1673c3f
refactor: create user model
holmir97 Feb 20, 2022
b2ce5f3
refactor: add typescript mongoose module
holmir97 Feb 20, 2022
937afea
refactor: update connect mongoose options
holmir97 Feb 20, 2022
731b59f
refactor: update db config
holmir97 Feb 20, 2022
0fd39d7
refactor: save temporarily for testing
holmir97 Feb 20, 2022
f7a5ffb
refactor: modify connect message
holmir97 Feb 20, 2022
de207ab
fix: fix emailcode column name
holmir97 Feb 20, 2022
217fec4
fix: wrong data type
holmir97 Feb 20, 2022
83c34c1
Merge pull request #105 from TeamBookTez/refactor/switch-database
holmir97 Feb 20, 2022
b585f9b
refactor: delete sequelize config
holmir97 Feb 20, 2022
0841ef7
refactor: testing...
holmir97 Feb 22, 2022
ab8108d
refactor: testing...
holmir97 Feb 22, 2022
1884455
refactor: modify book detail api
holmir97 Feb 22, 2022
288d642
refactor: modify request id-variable types
holmir97 Feb 22, 2022
28b5519
refactor: post review pre api
holmir97 Feb 22, 2022
70d3f74
refactor: get review question list api
holmir97 Feb 22, 2022
1a0a8b6
refactor: patch review peri api
holmir97 Feb 22, 2022
de66584
refactor: delete review api
holmir97 Feb 22, 2022
e9dd2d9
refactor: book detail api
holmir97 Feb 22, 2022
ab83a8e
feat: add snake camel convert library
geeneve Feb 23, 2022
0cccf0f
refactor: modify getEmailServce
geeneve Feb 23, 2022
0f8df95
refactor: modify postSignupService
geeneve Feb 23, 2022
387296b
refactor: change library coding style
geeneve Feb 24, 2022
6335316
refactor: edit auth API
seohyun-106 Feb 24, 2022
36962b0
refactor: edit review API
seohyun-106 Feb 24, 2022
4839eb6
refactor: edit user API
seohyun-106 Feb 24, 2022
dd6ea38
refactor: modify api database to mongoDB
seohyun-106 Feb 24, 2022
d1c8f4e
refactor: modify book userid type
holmir97 Feb 24, 2022
2a62a60
refactor: modify id type
holmir97 Feb 24, 2022
adbcda5
Merge pull request #116 from TeamBookTez/refactor/modify-api-mongoDB
holmir97 Feb 24, 2022
5181d3c
Merge branch 'develop-mongo' into refactor/book-review-api
holmir97 Feb 24, 2022
a15157d
Merge pull request #117 from TeamBookTez/refactor/book-review-api
holmir97 Feb 24, 2022
c502dc5
refactor: change
geeneve Feb 24, 2022
5674211
fix: merge conflict resolve
geeneve Feb 24, 2022
a5c351f
refactor: bug fix
geeneve Feb 24, 2022
519ea52
Merge pull request #118 from TeamBookTez/refactor/mongodb-refactor-doโ€ฆ
geeneve Feb 24, 2022
aa8c10e
refactor: post book api
holmir97 Feb 26, 2022
2d1dce6
refactor: Modify login response structure
holmir97 Feb 26, 2022
fd878d7
refactor: get book api
holmir97 Feb 26, 2022
6e9312a
refactor: book pre peri post route
holmir97 Feb 26, 2022
77358f4
refactor: Modify book detail progjection
holmir97 Feb 26, 2022
8768c26
refactor: update modules
holmir97 Feb 26, 2022
b3714e7
refactor: Modify request type
holmir97 Feb 26, 2022
8998266
refactor: remove import line
holmir97 Feb 26, 2022
766dc36
refactor: patch review pre api
holmir97 Feb 26, 2022
b492b4d
refactor: Modify isbn_seb column option
holmir97 Feb 26, 2022
157253a
refactor: post book api
holmir97 Feb 26, 2022
86fc75c
refactor: get review question list api
holmir97 Feb 26, 2022
3e1331c
refactor: add convention converter
holmir97 Mar 2, 2022
608761a
refactor: patch review peri api
holmir97 Mar 2, 2022
2eeaafa
refactor: Modify find review query
holmir97 Mar 2, 2022
7b2f9e2
hotfix: Modify response branch
holmir97 Mar 2, 2022
43eff97
refactor: get review api
holmir97 Mar 2, 2022
b757034
fix: review response message
holmir97 Mar 2, 2022
25c075f
refactor: patch review route
holmir97 Mar 2, 2022
29c96f8
refactor: patch review api
holmir97 Mar 2, 2022
fac3a2f
refactor: Modify delete response message
holmir97 Mar 2, 2022
a7d8a1a
refactor: delete review api
holmir97 Mar 2, 2022
1ce170a
fix: review find query
holmir97 Mar 2, 2022
5c9a4cd
refactor: get review pre api
holmir97 Mar 2, 2022
9ffdebe
refactor: get review peri api
holmir97 Mar 2, 2022
e8d8022
fix: snake to camel
holmir97 Mar 2, 2022
094911d
fix: snake to camel
holmir97 Mar 2, 2022
5bc7abd
fix: review find query
holmir97 Mar 3, 2022
3ce633c
fix: snake to camel
holmir97 Mar 3, 2022
e4173d0
fix: Modify user find query
holmir97 Mar 3, 2022
9d2a082
refactor: Remove test comment
holmir97 Mar 3, 2022
5942873
refactor: Reopen slack webhook message
holmir97 Mar 3, 2022
8248fc8
refactor: Reopen slack webhook message
holmir97 Mar 3, 2022
8ab3145
refactor: Modify arrow function
holmir97 Mar 3, 2022
f9c91f4
refactor: Modify find query
holmir97 Mar 3, 2022
e8f1bdb
refactor: Modify arrow function
holmir97 Mar 3, 2022
eb20f96
Merge branch 'develop' into develop-mongo
holmir97 Mar 3, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7,145 changes: 224 additions & 6,921 deletions package-lock.json

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
"gravatar": "^1.8.1",
"jsonwebtoken": "^8.5.1",
"moment": "^2.29.1",
"mongoose": "^6.2.2",
"mongoose-validator": "^2.1.0",
"multer": "^1.4.2",
"multer-s3": "^2.9.0",
"pg": "^8.7.1",
Expand All @@ -38,6 +40,7 @@
"@types/bcryptjs": "^2.4.2",
"@types/cors": "^2.8.12",
"@types/express": "^4.17.11",
"@types/mongoose": "^5.11.97",
"@types/mocha": "^9.0.0",
"@types/node": "^14.18.5",
"@types/sequelize": "^4.28.9",
Expand Down
9 changes: 0 additions & 9 deletions src/.sequelizerc.ts

This file was deleted.

16 changes: 0 additions & 16 deletions src/config/config.ts

This file was deleted.

2 changes: 2 additions & 0 deletions src/config/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ export default {
/**
* Your secret sauce
*/
mongoURI: process.env.MONGODB_URI,

jwtSecret: process.env.JWT_SECRET,
jwtAlgorithm: process.env.JWT_ALGO,

Expand Down
14 changes: 7 additions & 7 deletions src/controller/auth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -308,18 +308,18 @@ const postSignupController = async (req: Request, res: Response) => {
* @๋กœ๊ทธ์ธ_์—ฌ๋ถ€_๊ฒ€์‚ฌ
* @route GET /auth/check
* @access public
* @err
* @err
*/
const getLoginFlagController = async(req: Request, res: Response) => {
const getLoginFlagController = async (req: Request, res: Response) => {
try {
const resData = await authService.getLoginFlagService(
req.user ? true : false
)
);
return response.dataResponse(
res,
res,
returnCode.OK,
"๋กœ๊ทธ์ธ ์—ฌ๋ถ€ ํ™•์ธ ์„ฑ๊ณต.",
true,
"๋กœ๊ทธ์ธ ์—ฌ๋ถ€ ํ™•์ธ ์„ฑ๊ณต.",
true,
resData
);
} catch (err) {
Expand All @@ -332,7 +332,7 @@ const getLoginFlagController = async(req: Request, res: Response) => {
"์„œ๋ฒ„ ์˜ค๋ฅ˜"
);
}
}
};

const authController = {
getEmailController,
Expand Down
2 changes: 1 addition & 1 deletion src/controller/book.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ const postBookController = async (req: Request, res: Response) => {
try {
const resData = await bookService.postBookService(
req.user ? true : false,
req.user ? Number(req.user.id) : constant.ANONYMOUS_USER,
req.user ? req.user.id : constant.ANONYMOUS_USER,
req.body.isbn,
req.body.thumbnail,
req.body.title,
Expand Down
32 changes: 16 additions & 16 deletions src/controller/review.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import reviewService from "../service/review";
const patchReviewPreController = async (req: Request, res: Response) => {
try {
const resData = await reviewService.patchReviewPreService(
Number(req.params.reviewId),
req.params.reviewId,
req.user.id,
req.body.answerOne,
req.body.answerTwo,
Expand Down Expand Up @@ -78,8 +78,8 @@ const patchReviewPreController = async (req: Request, res: Response) => {
const getQuestionController = async (req: Request, res: Response) => {
try {
const resData = await reviewService.getQuestionService(
Number(req.user.id),
Number(req.params.reviewId)
req.user.id,
req.params.reviewId
);

if (resData === constant.NULL_VALUE) {
Expand All @@ -91,7 +91,7 @@ const getQuestionController = async (req: Request, res: Response) => {
);
}

if (resData === constant.WRONG_REQUEST_VALUE) {
if (resData === constant.DB_NOT_FOUND) {
return response.basicResponse(
res,
returnCode.BAD_REQUEST,
Expand Down Expand Up @@ -130,7 +130,7 @@ const getQuestionController = async (req: Request, res: Response) => {
const patchReviewPeriController = async (req: Request, res: Response) => {
try {
const resData = await reviewService.patchReviewPeriService(
Number(req.params.reviewId),
req.params.reviewId,
req.user.id,
req.body.answerThree,
req.body.reviewSt
Expand Down Expand Up @@ -184,8 +184,8 @@ const patchReviewPeriController = async (req: Request, res: Response) => {
const getReviewController = async (req: Request, res: Response) => {
try {
const resData = await reviewService.getReviewService(
Number(req.user.id),
Number(req.params.reviewId)
req.user.id,
req.params.reviewId
);

if (resData === constant.NULL_VALUE) {
Expand Down Expand Up @@ -236,8 +236,8 @@ const getReviewController = async (req: Request, res: Response) => {
const getReviewPreController = async (req: Request, res: Response) => {
try {
const resData = await reviewService.getReviewPreService(
Number(req.user.id),
Number(req.params.reviewId)
req.user.id,
req.params.reviewId
);

if (resData === constant.NULL_VALUE) {
Expand Down Expand Up @@ -288,8 +288,8 @@ const getReviewPreController = async (req: Request, res: Response) => {
const getReviewPeriController = async (req: Request, res: Response) => {
try {
const resData = await reviewService.getReviewPeriService(
Number(req.user.id),
Number(req.params.reviewId)
req.user.id,
req.params.reviewId
);

if (resData === constant.NULL_VALUE) {
Expand Down Expand Up @@ -340,7 +340,7 @@ const getReviewPeriController = async (req: Request, res: Response) => {
const patchReviewController = async (req: Request, res: Response) => {
try {
const resData = await reviewService.patchReviewService(
Number(req.params.reviewId),
req.params.reviewId,
req.body.answerOne,
req.body.answerTwo,
req.body.answerThree
Expand All @@ -355,7 +355,7 @@ const patchReviewController = async (req: Request, res: Response) => {
);
}

if (resData === constant.WRONG_REQUEST_VALUE) {
if (resData === constant.DB_NOT_FOUND) {
return response.basicResponse(
res,
returnCode.BAD_REQUEST,
Expand Down Expand Up @@ -394,8 +394,8 @@ const patchReviewController = async (req: Request, res: Response) => {
const deleteReviewController = async (req: Request, res: Response) => {
try {
const resData = await reviewService.deleteReviewService(
Number(req.user.id),
Number(req.params.reviewId)
req.user.id,
req.params.reviewId
);

if (resData === constant.NULL_VALUE) {
Expand All @@ -412,7 +412,7 @@ const deleteReviewController = async (req: Request, res: Response) => {
res,
returnCode.BAD_REQUEST,
false,
"์กด์žฌํ•˜์ง€ ์•Š๋Š” Review์ž…๋‹ˆ๋‹ค."
"์กด์žฌํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์‚ญ์ œ๋œ Review์ž…๋‹ˆ๋‹ค."
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์„ธ์‹ฌํ•œ ๋ฉ”์„ธ์ง€ ..

);
}

Expand Down
25 changes: 4 additions & 21 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import express from "express";
import cors from "cors";
import { sequelize } from "./models";
import router from "./router";
import connectDB from "./loader/db";

const app = express();

// Connect Database
connectDB();

app.use(express.urlencoded());
app.use(express.json());

Expand Down Expand Up @@ -47,26 +50,6 @@ const server = app
##############################################
`
);

// ์‹œํ€„๋ผ์ด์ฆˆ ์—ฐ๊ฒฐ
sequelize
.authenticate()
.then(async () => {
console.log("โœ… Connect PostgreSQL");
})
.catch((err) => {
console.log("TT : ", err);
});

// ์‹œํ€„๋ผ์ด์ฆˆ ๋ชจ๋ธ DB์— ์‹ฑํฌ
sequelize
.sync({ force: false })
.then(() => {
console.log("โœ… Sync Models to DB");
})
.catch((err) => {
console.error(err);
});
})
.on("error", (err) => {
console.error(err);
Expand Down
12 changes: 12 additions & 0 deletions src/interface/IBook.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import mongoose from "mongoose";

export interface IBook {
_id: mongoose.Schema.Types.ObjectId;
isbn: number;
isbn_sub: number;
title: string;
author: [string];
translator: [string];
thumbnail: string;
publication_dt: string;
}
16 changes: 16 additions & 0 deletions src/interface/IReview.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import mongoose from "mongoose";

export interface IReview {
_id: mongoose.Schema.Types.ObjectId;
user_id: mongoose.Schema.Types.ObjectId;
book_id: mongoose.Schema.Types.ObjectId;
question_list: [string];
answer_one: string;
answer_two: string;
answer_three: object;
review_st: number;
finish_St: boolean;
created_at: Date;
updated_at: Date;
is_deleted: boolean;
}
14 changes: 14 additions & 0 deletions src/interface/IUser.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import mongoose from "mongoose";

export interface IUser {
_id: mongoose.Schema.Types.ObjectId;
email: string;
password: string;
nickname: string;
img: string;
refresh_token: string;
email_code: string;
created_at: Date;
updated_at: Date;
is_deleted: boolean;
}
62 changes: 62 additions & 0 deletions src/library/convertSnakeToCamel.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import _ from "lodash";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ด ํŒŒ์ผ ์›๋ž˜ js์—ฌ์„œ ๊ธ‰ํ•˜๊ฒŒ ts๋กœ ๋ฐ”๊พผ๊ฑด๋”” ํŒŒ๋ผ๋ฏธํ„ฐ๋ž‘ ํ•จ์ˆ˜์— ํƒ€์ž… ์ง€์ • ํ•ด์•ผ๊ฒ ๋‹ค ๋‚˜์ค‘์—


export const toCamel = (s) => {
return s.replace(/([-_][a-z])/gi, ($1) => {
return $1.toUpperCase().replace("-", "").replace("_", "");
});
};

export const isArray = (a) => {
return Array.isArray(a);
};

export const isObject = (o) => {
return o === Object(o) && !isArray(o) && typeof o !== "function";
};

export const keysToCamel = (o) => {
if (isObject(o)) {
const n = {};

Object.keys(o).forEach((k) => {
n[toCamel(k)] = o[k];
});

return n;
} else if (isArray(o)) {
return o.map((i) => {
return keysToCamel(i);
});
}

return o;
};

export const keysToSnake = (o) => {
if (isObject(o)) {
const n = {};

Object.keys(o).forEach((k) => {
n[_.snakeCase(k)] = o[k];
});

return n;
} else if (isArray(o)) {
return o.map((i) => {
return _.snakeCase(i);
});
}

return o;
};

export const toSnakeString = (e) => {
return e
.match(/([A-Z])/g)
.reduce((str, c) => str.replace(new RegExp(c), "_" + c.toLowerCase()), e)
.substring(e.slice(0, 1).match(/([A-Z])/g) ? 1 : 0);
};

export const toCamelString = (e) => {
return e.replace(/_([a-z])/g, (g) => g[1].toUpperCase());
};
30 changes: 30 additions & 0 deletions src/loader/db.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import mongoose from "mongoose";
import config from "../config";

// models
import User from "../models/User";
import Book from "../models/Book";
import Review from "../models/Review";

const connectDB = async () => {
try {
await mongoose.connect(config.mongoURI, {});

await User.createCollection().then((collection) => {
console.log("User Collection is created!");
});
await Book.createCollection().then((collection) => {
console.log("Book Collection is created!");
});
await Review.createCollection().then((collection) => {
console.log("Review Collection is created!");
});

console.log("Mongoose Connected ...");
} catch (err) {
console.error(err.message);
process.exit(1);
}
};

export default connectDB;
Loading