본문 바로가기
TIL

Node.js 백오피스 팀 프로젝트 (6)

by 황민도 2024. 6. 28.

내일배움캠프 스파르타 코딩클럽

 

< routers. bookmarks.router.js >

import express from 'express';
import { BookmarkController } from '../controllers/bookmarks.controller.js';
import { requireAccessToken } from '../middlewares/require-access-token.middleware.js';

const bookmarkRouter = express.Router();
const bookmarkController = new BookmarkController();

// 펫시터 즐겨찾기 등록
bookmarkRouter.post(
  '/:petsitterId/follow',
  requireAccessToken,
  bookmarkController.followSitter
);

export { bookmarkRouter };

 

< controllers. bookmarks.controller.js >

import { HTTP_STATUS } from '../constants/http-status.constant.js';
import { BookmarkService } from '../services/bookmarks.service.js';

export class BookmarkController {
  bookmarkService = new BookmarkService();

  followSitter = async (req, res, next) => {
    const userId = req.user.id;
    const petsitterId = req.params.petsitterId;
    try {
      const data = await this.bookmarkService.followSitter(userId, petsitterId);
      return res.status(HTTP_STATUS.CREATED).json({
        status: HTTP_STATUS.CREATED,
        message: '북마크에 등록되었습니다',
        data,
      });
    } catch (err) {
      next(err);
    }
  };
}

 

< services. bookmarks.service.js >

import { BookmarkRepository } from '../repositories/bookmarks.repository.js';

export class BookmarkService {
  bookmarkRepository = new BookmarkRepository();

  // 펫시터 북마크 하기

  followSitter = async (userId, petsitterId) => {
    const user = await this.bookmarkRepository.findUserById(userId);
    const petsitter = await this.bookmarkRepository.findSitterById(petsitterId);

    const bookmarking = await this.bookmarkRepository.createBookmark(
      userId,
      petsitterId
    );

    if (!user || !petsitter) {
      throw new Error('정보가 없습니다');
    }

    return bookmarking;
  };
  2;
}

 

< repositories. bookmarks.repository.js >

import { prisma } from '../utils/prisma.utils.js';

export class BookmarkRepository {
  findSitterById = async (id) => {
    const data = await prisma.petsitter.findUnique({
      where: { id: +id },
    });
    return data;
  };

  findUserById = async (id) => {
    console.log(id);
    const temp = await prisma.user.findMany();
    console.log(temp);

    const data = await prisma.user.findUnique({
      where: { id },
    });
    return data;
  };

  createBookmark = async (userId, petsitterId) => {
    console.log(userId, petsitterId);
    const data = await prisma.bookmark.create({
      data: {
        userId,
        petsitterId: +petsitterId,
      },
    });
    return data;
  };
}