5가지 실행 타입

DataSource 방식

image.png

image.png

image.png

image.png

image.png

repository 방식

const query = await this.movieRepository
  .createQueryBuilder('movie')
  .leftJoinAndSelect('movie.detail', 'detail')
  .leftJoinAndSelect('movie.director', 'director')
  .leftJoinAndSelect('movie.genres', 'genres')
  .leftJoinAndSelect('movie.creator', 'creator');
const likedMovies =
  movieIds.length < 1
    ? []
    : await this.movieUserLikeRepository
        .createQueryBuilder('mul')
        .leftJoinAndSelect('mul.user', 'user')
        .leftJoinAndSelect('mul.movie', 'movie')
        .where('movie.id IN (:...movieIds)', { movieIds })
        .andWhere('user.id = :userId', { userId })
        .getMany();
await this.movieRepository.query(
  `update movie m
    set "likeCount" = (
      select count(*) from movie_user_like mul
      where m.id = mul."movieId" and mul."isLike" = true
    )`,
);

manager

const movie = await queryRunner.manager.save(Movie, {
  ...movieInfo,
  detail: {
    detail: detail,
  },
  director,
  genres,
  movieFilePath: join(movieFolder, movieFileName),
  creator: {
    id: userId,
  },
});