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

[fix] log 2개 보이는 문제 해결 + [add] 사용자 fcm 토큰 수정 api 추가 #65

Merged
merged 4 commits into from
Feb 1, 2022
Merged
Changes from all commits
Commits
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
31 changes: 24 additions & 7 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -35,7 +35,7 @@
"passport": "^0.5.0",
"passport-jwt": "^4.0.0",
"passport-local": "^1.0.0",
"winston": "^3.3.3",
"winston": "^3.5.1",
"winston-daily-rotate-file": "^4.5.5"
},
"devDependencies": {
1 change: 0 additions & 1 deletion src/app.js
Original file line number Diff line number Diff line change
@@ -28,7 +28,6 @@ if (nodeEnv === 'production') {
}

app.use(morgan(morganFormat, { stream: logger.stream }));
app.use(morganMiddleware);
app.listen(port, () =>
logger.info(`Server start listening on port ${port} | ${nodeEnv}`),
);
7 changes: 3 additions & 4 deletions src/config/winston.js
Original file line number Diff line number Diff line change
@@ -20,14 +20,14 @@ const logger = winston.createLogger({
logFormat,
),
transports: [
// 0, 1, 2 level과 0 level 로그 파일, 5 level 로그 파일 별도 보관
// 0, 1, 2 level과 0 level 로그 파일 별도 보관
new WinstonDaily({
level: 'info',
level: 'debug',
datePattern: 'YYYY-MM-DD',
dirname: logDir,
filename: `%DATE%.log`,
maxFiles: 10000,
// zippedArchive: true,
zippedArchive: true,
}),
new WinstonDaily({
level: 'error',
@@ -37,7 +37,6 @@ const logger = winston.createLogger({
maxFiles: 10000,
zippedArchive: true,
}),
new winston.transports.Console({ handleExceptions: true }),
],
});

66 changes: 35 additions & 31 deletions src/controllers/userController.js
Original file line number Diff line number Diff line change
@@ -12,13 +12,11 @@ const TAG = 'userController ';
module.exports = {
deleteUserOne: async function (req, res, next) {
try {
await User.deleteUser(req).then((result) => {
if (result) {
res.status(StatusCode.OK).json({
success: true,
message: SuccessMessage.userDelete,
});
}
await User.deleteUser(req).then(() => {
res.status(StatusCode.OK).json({
success: true,
message: SuccessMessage.userDelete,
});
});
} catch (err) {
next(err);
@@ -29,13 +27,11 @@ module.exports = {
if (!req.body.nickname || !req.body.profile_img) {
throw new BadRequest(ErrorMessage.BadRequestMeg);
}
await User.updateInfo(req).then((result) => {
if (result) {
res.status(StatusCode.OK).json({
success: true,
message: SuccessMessage.userInfoUpdate,
});
}
await User.updateInfo(req).then(() => {
res.status(StatusCode.OK).json({
success: true,
message: SuccessMessage.userInfoUpdate,
});
});
} catch (err) {
next(err);
@@ -46,13 +42,11 @@ module.exports = {
if (!req.body.profile_img) {
throw new BadRequest(ErrorMessage.BadRequestMeg);
}
await User.updateImage(req).then((result) => {
if (result) {
res.status(StatusCode.OK).json({
success: true,
message: SuccessMessage.userProfileImgUpdate,
});
}
await User.updateImage(req).then(() => {
res.status(StatusCode.OK).json({
success: true,
message: SuccessMessage.userProfileImgUpdate,
});
});
} catch (err) {
next(err);
@@ -63,21 +57,31 @@ module.exports = {
if (!req.body.nickname) {
throw new BadRequest(ErrorMessage.BadRequestMeg);
}
await User.updateNickname(req).then((result) => {
if (result) {
res.status(StatusCode.OK).json({
success: true,
message: SuccessMessage.userNickNameUpdate,
});
}
await User.updateNickname(req).then(() => {
res.status(StatusCode.OK).json({
success: true,
message: SuccessMessage.userNickNameUpdate,
});
});
} catch (err) {
next(err);
}
},
updateUserFCMToken: async function (req, res, next) {
try {
if (!req.body.fcm_token) {
throw new BadRequest(ErrorMessage.BadRequestMeg);
}
await User.updateFCM(req).then(() => {
res.status(StatusCode.OK).json({
success: true,
message: SuccessMessage.userFcmTokenUpdate,
});
});
} catch (err) {
next(err);
}
},
// updateUserFCMToken: async function (req, res) { // TODO
// await User.updateFCM(req).then().catch();
// },
selectUserInfo: async function (req, res, next) {
await User.selectInfo(req)
.then((result) => {
37 changes: 21 additions & 16 deletions src/models/user.js
Original file line number Diff line number Diff line change
@@ -123,22 +123,27 @@ module.exports = {
}
return true;
},
// updateFCM: async function (req) { // TODO
// var userId = Number(req.decoded);
// var fcmToken = req.body.fcm_token;

// var sqlUpdate = "UPDATE users SET fcm_token = ? WHERE user_id = ?";
// var params = [fcmToken, userId];

// const connection = await pool.connection(async (conn) => conn);
// await connection.beginTransaction();
// const [rows] = await connection
// .query(sqlUpdate, params)
// .then(await connection.commit())
// .catch(await connection.rollback());
// connection.release();
// return rows.affectedRows >= 1 ? true : false;
// },
updateFCM: async function (req) {
const userId = Number(req.decoded);
const fcmToken = req.body.fcm_token;

const sqlUpdate = 'UPDATE users SET fcm_token = ? WHERE user_id = ?';
const params = [fcmToken, userId];

const connection = await pool.connection(async (conn) => conn);
await connection.beginTransaction();
const [rows] = await connection
.query(sqlUpdate, params)
.then(await connection.commit())
.catch(await connection.rollback());
connection.release();

if (rows.affectedRows < 1) {
throw new NotFound(ErrorMessage.userFcmTokenUpdateNotFound);
}

return true;
},
selectInfo: async function (req) {
const userId = Number(req.decoded);

2 changes: 1 addition & 1 deletion src/routes/userRoutes.js
Original file line number Diff line number Diff line change
@@ -7,7 +7,7 @@ router.delete('/', verifyToken, userController.deleteUserOne);
router.put('/', verifyToken, userController.updateUserInfo);
router.put('/image', verifyToken, userController.updateUserImage);
router.put('/nickname', verifyToken, userController.updateUserNickname);
// router.put("/fcm", userController.updateUserFCMToken); // TODO
router.put('/fcm', verifyToken, userController.updateUserFCMToken);
router.get('/', verifyToken, userController.selectUserInfo);

module.exports = router;
2 changes: 2 additions & 0 deletions src/utils/response.js
Original file line number Diff line number Diff line change
@@ -34,6 +34,7 @@ const SuccessMessage = {
userInfoUpdate: '사용자 정보 수정 성공',
userNickNameUpdate: '사용자 닉네임 수정 성공',
userProfileImgUpdate: '사용자 프로필 이미지 수정 성공',
userFcmTokenUpdate: '사용자 Fcm Token 수정 성공',
userDelete: '사용자 삭제 성공',

loginSuccessAfterSuccessSignUp: 'wishboard 회원가입 후 로그인 성공',
@@ -77,6 +78,7 @@ const ErrorMessage = {
userInfoUpdateNotFound: '수정된 사용자 정보 없음',
userNickNameUpdateNotFound: '수정된 사용자 닉네임 없음',
userProfileImgUpdateNotFound: '수정된 사용자 프로필 이미지 없음',
userFcmTokenUpdateNotFound: '수정된 사용자 fcm token 없음',
userDeleteError: '삭제된 사용자 없음',

signUpFailed: 'wishboard 앱 회원가입 실패',