// src/services/likeService.ts

// ...

	},

  isLiked: async (userId: number, courseId: number) => {
    const like = await Like.findOne({
      where: {
        userId,
        courseId
      }
    })

    return like !== null ? true : false
  }
}
// src/controllers/coursesController.ts

// ...

import { likeService } from '../services/likeService'

export const coursesController = {

		// ...

	  // GET /courses/:id
    show: async (req: AuthenticatedRequest, res: Response) => {
        const userId = req.user!.id
        const courseId = req.params.id

        try {
            const course = await courseService.findByIdWithEpisodes(courseId)

            if (!course) return res.status(404).json({ message: 'Curso não encontrado' })

            const liked = await likeService.isLiked(userId, Number(courseId))

            return res.json({ ...course.get(), favorited, liked })
        } catch (err) {
            if (err instanceof Error) {
                return res.status(400).json({ message: err.message })
            }
        }
    }

// ...
// src/services/favoriteService.ts

import { Favorite } from "../models"

export const favoriteService = {
  isFavorited: async (userId: number, courseId: number) => {
    const favorite = await Favorite.findOne({
      where: {
        userId,
        courseId
      }
    })

    return favorite !== null
  }

	// ...
// src/controllers/coursesController.ts

// ...
import { favoriteService } from '../services/favoriteService'
import { likeService } from '../services/likeService'

export const coursesController = {

		// ...

	  // GET /courses/:id
    show: async (req: AuthenticatedRequest, res: Response) => {
        const userId = req.user!.id
        const courseId = req.params.id

        try {
            const course = await courseService.findByIdWithEpisodes(courseId)

            if (!course) return res.status(404).json({ message: 'Curso não encontrado' })

            const liked = await likeService.isLiked(userId, Number(courseId))
            const favorited = await favoriteService.isFavorited(userId, Number(courseId))

            return res.json({ ...course.get(), favorited, liked })
        } catch (err) {
            if (err instanceof Error) {
                return res.status(400).json({ message: err.message })
            }
        }
    }

// ...