Skip to content

Commit

Permalink
feat: follow 등록 #132
Browse files Browse the repository at this point in the history
  • Loading branch information
seoyeoneel02 committed Sep 27, 2024
1 parent 9922ee1 commit 830e550
Show file tree
Hide file tree
Showing 7 changed files with 124 additions and 7 deletions.
8 changes: 7 additions & 1 deletion src/domains/search/search.controller.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { response } from "../../config/response.js";
import { status } from "../../config/response.status.js";
import { getSearch, getCloth, getSearchResult, getSearchBrand, getMyCloth, getMyWish } from "./search.provider.js";
import { addMyCloth, addMyWish, delMyWish } from "./search.service.js";
import { addMyCloth, addMyWish, delMyWish, addMyFollow } from "./search.service.js";

export const searchPreview = async (req, res, next) => {
console.log("검색 메인화면을 조회합니다");
Expand Down Expand Up @@ -51,4 +51,10 @@ export const getWish = async (req, res, next) => {
console.log("관심 있는 옷 조회를 요청하였습니다!");
const userId = res.locals.uuid;
res.send(response(status.SUCCESS, await getMyWish(userId, req.params.clothId)));
}

export const addFollow = async (req, res, next) => {
console.log("팔로우를 요청하였습니다!");
const userId = res.locals.uuid;
res.send(response(status.SUCCESS, await addMyFollow(userId, req.params.clothId)));
}
19 changes: 18 additions & 1 deletion src/domains/search/search.dao.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { UserNicknameToClothId, UserCategoryToClothId,
brandToBrandName, userIdToNickname, userToNickname, getBrandToBrandId,
userToBrand, categoryToBrand, clothToBrand, clothCategoryToBrand,
insertCloth, insertRealSize, getCloth,
addWishSQL, delWishSQL, getWishSQL } from "./search.sql.js";
addWishSQL, delWishSQL, getWishSQL, getFollowSQL, addFollowSQL } from "./search.sql.js";

// nickname+cloth 반환
export const getNicknameToClothId = async (category) => {
Expand Down Expand Up @@ -269,4 +269,21 @@ export const getWishDAO = async (userId, clothId) => {
}catch (err) {
throw new BaseError(status.PARAMETER_IS_WRONG);
}
}

// Follow 추가
export const addFollowDAO = async (userId, clothId) => {
try{
const conn = await pool.getConnection();
const to_user = await pool.query(getUserIdToClothId, clothId);
const is_exist = await pool.query(getFollowSQL, [userId, to_user[0][0].uuid]);
if(is_exist[0].length !== 0){
throw new BaseError(status.PARAMETER_IS_WRONG);
}
const follow = await pool.query(addFollowSQL, [userId, to_user[0][0].uuid]);
conn.release();
return follow[0].insertId;
}catch (err) {
throw new BaseError(status.PARAMETER_IS_WRONG);
}
}
4 changes: 4 additions & 0 deletions src/domains/search/search.dto.js
Original file line number Diff line number Diff line change
Expand Up @@ -195,4 +195,8 @@ export const getWishDTO = (wish) => {
}

return {"wish_id": wish_id};
}

export const addFollowDTO = (follow) => {
return {"follow_id": follow};
}
8 changes: 6 additions & 2 deletions src/domains/search/search.service.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { BaseError } from "../../config/error.js";
import { status } from "../../config/response.status.js";
import { addClothResponseDTO, addWishDTO, delWishDTO } from "./search.dto.js";
import { clothAdd, getAddCloth, addWishDAO, delWishDAO } from "./search.dao.js";
import { addClothResponseDTO, addWishDTO, delWishDTO, addFollowDTO } from "./search.dto.js";
import { clothAdd, getAddCloth, addWishDAO, delWishDAO, addFollowDAO } from "./search.dao.js";

export const addMyCloth = async (userId, body) => {
const requiredFields = ['name', 'product_code', 'category', 'size', 'fit'];
Expand Down Expand Up @@ -54,4 +54,8 @@ export const addMyWish = async (userId, clothId) => {

export const delMyWish = async (userId, clothId) => {
return delWishDTO(await delWishDAO(userId, clothId));
}

export const addMyFollow = async (userId, clothId) => {
return addFollowDTO(await addFollowDAO(userId, clothId));
}
6 changes: 5 additions & 1 deletion src/domains/search/search.sql.js
Original file line number Diff line number Diff line change
Expand Up @@ -111,4 +111,8 @@ export const addWishSQL = "INSERT INTO wish (cloth_id, wisher_uuid) VALUES (?, ?

export const delWishSQL = "DELETE FROM wish WHERE cloth_id = ? AND wisher_uuid = ? ;"

export const getWishSQL = "SELECT id FROM wish WHERE cloth_id = ? AND wisher_uuid = ? ;"
export const getWishSQL = "SELECT id FROM wish WHERE cloth_id = ? AND wisher_uuid = ? ;"

export const getFollowSQL = "SELECT id FROM follow WHERE from_uuid = ? AND to_uuid = ? ;"

export const addFollowSQL = "INSERT INTO follow (from_uuid, to_uuid) VALUES (?, ?) ;"
8 changes: 6 additions & 2 deletions src/routes/search.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import express from "express";
import asyncHandler from 'express-async-handler';
import { LoginCheck } from "../middlewares/logincheck.js";
import { searchPreview, clothView, searchView, brandView, addClothPreview, addCloth, addWish, delWish, getWish } from "../domains/search/search.controller.js";
import { searchPreview, clothView, searchView, brandView, addClothPreview, addCloth,
addWish, delWish, getWish, addFollow } from "../domains/search/search.controller.js";

export const searchRouter = express.Router({mergeParams: true});

Expand Down Expand Up @@ -30,4 +31,7 @@ searchRouter.post('/:clothId/wish', LoginCheck, asyncHandler(addWish));
searchRouter.delete('/:clothId/wish', LoginCheck, asyncHandler(delWish));

//검색-wish
searchRouter.get('/:clothId/wish', LoginCheck, asyncHandler(getWish));
searchRouter.get('/:clothId/wish', LoginCheck, asyncHandler(getWish));

//검색-follow에 추가
searchRouter.post('/:clothId/follow', LoginCheck, asyncHandler(addFollow));
78 changes: 78 additions & 0 deletions src/swagger/search.swagger.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -832,6 +832,84 @@ paths:
type: string
example: 잘못된 요청입니다

'500':
description: 서버 에러
schema:
type: object
properties:
status:
type: integer
example: 500
isSuccess:
type: boolean
example: false
code:
type: integer
example: COMMON000
message:
type: string
example: 서버 에러, 관리자에게 문의 바랍니다.

/FITple/search/{clothId}/follow:
post:
tags:
- Search
summary: follow 등록 로직
operationId: addFollow
security:
- bearerAuth: []
parameters:
- name: clothId
in: path
required: true
schema:
type: integer
responses:
'200':
description: follow 등록 성공
schema:
type: object
properties:
status:
type: integer
example: 200
isSuccess:
type: boolean
example: true
code:
type: integer
example: 200
message:
type: string
example: "success!"
data:
type: array
example: {
"clothData": [
{
"wish_id": 20
}
]
}

'400':
description: 잘못된 요청
schema:
type: object
properties:
status:
type: integer
example: 400
isSuccess:
type: boolean
example: false
code:
type: integer
example: COMMON001
message:
type: string
example: 잘못된 요청입니다

'500':
description: 서버 에러
schema:
Expand Down

0 comments on commit 830e550

Please sign in to comment.