5가지 실행 타입
DataSource 방식





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,
},
});