Skip to content

Commit fd544bc

Browse files
committed
feat(movie.module.ts): add ConfigModule import
feat(movie.service.ts): add ConfigService import feat(movie.service.ts): add logger to MovieService feat(movie.service.ts): add addMovie method to MovieService
1 parent 6591d99 commit fd544bc

File tree

2 files changed

+38
-4
lines changed

2 files changed

+38
-4
lines changed

src/movie/movie.module.ts

+2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { MongooseModule } from '@nestjs/mongoose';
66
import { MovieAward, MovieAwardSchema } from './schemas/movie-award.schema';
77
import { MeiliModule } from '../meili/meili.module';
88
import { CacheConfig } from 'src/common/configs/cache.config';
9+
import { ConfigModule } from '@nestjs/config';
910

1011
@Module({
1112
imports: [
@@ -15,6 +16,7 @@ import { CacheConfig } from 'src/common/configs/cache.config';
1516
{ name: MovieAward.name, schema: MovieAwardSchema },
1617
]),
1718
MeiliModule,
19+
ConfigModule,
1820
],
1921
controllers: [MovieController],
2022
providers: [MovieService],

src/movie/movie.service.ts

+36-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
import { Injectable } from '@nestjs/common';
1+
import { Injectable, Logger } from '@nestjs/common';
22
import { InjectModel } from '@nestjs/mongoose';
33
import { Movie, MovieDocument } from './schemas/movie.schema';
44
import { Model } from 'mongoose';
5-
import { BaseService } from 'src/common/base/base.service';
65
import { getRandomInt } from 'src/common/utils/get-random-int.util';
76
import { GetPossibleValueDto } from './dto/get-possible-values.dto';
87
import { PossibleValueDto } from './dto/response/possible-value.response.dto';
@@ -17,13 +16,16 @@ import { MOVIE_INDEX } from './constants/movie-index';
1716
import { SearchDto } from 'src/common/dto/query/search.dto';
1817
import { MovieDocsResponseDtoV1 } from './dto/v1/movie-docs.response.dto';
1918
import { MovieDtoV1 } from './dto/v1/movie.dto';
19+
import { ConfigService } from '@nestjs/config';
2020

2121
@Injectable()
2222
export class MovieService {
23+
private readonly logger = new Logger(MovieService.name);
2324
constructor(
2425
@InjectModel(Movie.name) private readonly movieModel: Model<MovieDocument>,
2526
@InjectModel(MovieAward.name) private readonly movieAwardModel: Model<MovieAwardDocument>,
2627
private readonly meiliService: MeiliService,
28+
private readonly configService: ConfigService,
2729
) {}
2830

2931
async findMany(query: IQuery): Promise<MovieDocsResponseDtoV1> {
@@ -52,8 +54,12 @@ export class MovieService {
5254

5355
async findOne(id: number | string): Promise<MovieDtoV1> {
5456
const found = await this.movieModel.findOne({ id });
55-
// @ts-ignore
56-
if (found) return found.toJSON();
57+
if (found) {
58+
// @ts-ignore
59+
return found.toJSON();
60+
} else {
61+
await this.addMovie(id);
62+
}
5763
return found;
5864
}
5965

@@ -116,4 +122,30 @@ export class MovieService {
116122
pages: Math.ceil(total / query.limit),
117123
};
118124
}
125+
126+
async addMovie(id: number | string): Promise<void> {
127+
this.logger.log(`Add movie with id: ${id}`);
128+
const baseUrl = this.configService.get('UPDATE_API_BASE_URL');
129+
const resp = await fetch(`${baseUrl}/movie`, {
130+
method: 'PUT',
131+
headers: { 'Content-Type': 'application/json' },
132+
body: JSON.stringify({
133+
updateData: [
134+
'base',
135+
'premiere',
136+
'facts',
137+
'fees',
138+
'budget',
139+
'videos',
140+
'similarMovies',
141+
'images',
142+
'persons',
143+
'allDataPersons',
144+
'sequelsAndPrequels',
145+
'reviews',
146+
],
147+
ids: [id],
148+
}),
149+
});
150+
}
119151
}

0 commit comments

Comments
 (0)