Skip to content

Instantly share code, notes, and snippets.

View kop7's full-sized avatar
🎯
Focusing

Matija Kop kop7

🎯
Focusing
View GitHub Profile
@kop7
kop7 / app.module.ts
Created August 12, 2020 18:44
App Module
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { ConfigModule } from './config/config.module';
import { SearchModule } from './modules/search/search.module';
import { MovieModule } from './modules/movie/movie.module';
@Module({
imports: [ConfigModule, SearchModule, MovieModule],
controllers: [AppController],
})
@kop7
kop7 / app.controller.ts
Created August 12, 2020 18:45
App Controller
import { Controller, Get } from '@nestjs/common';
@Controller()
export class AppController {
private start: number;
constructor() {
this.start = Date.now();
}
@kop7
kop7 / config.service.ts
Created August 12, 2020 18:46
Config Service
import * as dotenv from 'dotenv';
import * as fs from 'fs';
export class ConfigService {
private readonly envConfig: { [key: string]: string };
constructor(filePath: string) {
this.envConfig = dotenv.parse(fs.readFileSync(filePath));
}
@kop7
kop7 / config.module.ts
Created August 12, 2020 18:47
Config Module
import { Module } from '@nestjs/common';
import { ConfigService } from './config.service';
@Module({
providers: [
{
provide: ConfigService,
useValue: new ConfigService('.env'),
},
],
@kop7
kop7 / movie.comtroller.ts
Created August 12, 2020 18:48
Movie Controller
import { Controller, Get, Query } from '@nestjs/common';
import { MovieService } from './movie.service';
@Controller()
export class MovieController {
constructor(public readonly movieService: MovieService) {}
@Get('movies')
async getMovies(@Query('search') search: string) {
if (search !== undefined && search.length > 1) {
@kop7
kop7 / movie.module.ts
Created August 12, 2020 18:49
Movie Module
import { Module } from '@nestjs/common';
import { MovieService } from './movie.service';
import { MovieController } from './movie.controller';
import { SearchModule } from '../search/search.module';
@Module({
imports: [SearchModule],
providers: [MovieService],
controllers: [MovieController],
})
@kop7
kop7 / movie.service.ts
Created August 12, 2020 18:49
Movie Service
import { Injectable } from '@nestjs/common';
import { SearchService } from '../search/search.service';
@Injectable()
export class MovieService {
constructor(readonly esService: SearchService) {}
async findMovies(search: string = '') {
return await this.esService.search(search);
}
@kop7
kop7 / search.module.ts
Created August 12, 2020 18:50
Search Module
import { Module, OnModuleInit } from '@nestjs/common';
import { SearchService } from './search.service';
import { ElasticsearchModule } from '@nestjs/elasticsearch';
import { ConfigModule } from '../../config/config.module';
import { ConfigService } from '../../config/config.service';
@Module({
imports: [
ElasticsearchModule.registerAsync({
imports: [ConfigModule],
@kop7
kop7 / search.service.ts
Created August 12, 2020 18:51
Search Service
import { Injectable } from '@nestjs/common';
import { ElasticsearchService } from '@nestjs/elasticsearch';
import * as moviesJson from '../../../movies.json';
import { ConfigService } from '../../config/config.service';
interface MoviesJsonResponse {
title: string;
year: number;
cast: string[];
genres: string[];
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { ConfigService } from './config/config.service';
async function bootstrap() {
const configService = new ConfigService('.env');
const app = await NestFactory.create(AppModule);
app.enableCors();
app.setGlobalPrefix(configService.get('GLOBAL_PREFIX'));
await app.listen(configService.get('NODE_PORT'));