diff --git a/src/backend/.env.default b/src/backend/.env.default index f3a4037..3951301 100644 --- a/src/backend/.env.default +++ b/src/backend/.env.default @@ -1,4 +1,5 @@ DB_PATH=./config/db.sqlite FE_PATH=../frontend/browser DOWNLOADS_PATH=./downloads -FORMAT=mp3 \ No newline at end of file +FORMAT=mp3 +PORT=3000 \ No newline at end of file diff --git a/src/backend/src/app.controller.spec.ts b/src/backend/src/app.controller.spec.ts index d22f389..c9bda50 100644 --- a/src/backend/src/app.controller.spec.ts +++ b/src/backend/src/app.controller.spec.ts @@ -1,6 +1,5 @@ import { Test, TestingModule } from '@nestjs/testing'; import { AppController } from './app.controller'; -import { AppService } from './app.service'; describe('AppController', () => { let appController: AppController; @@ -8,7 +7,7 @@ describe('AppController', () => { beforeEach(async () => { const app: TestingModule = await Test.createTestingModule({ controllers: [AppController], - providers: [AppService], + providers: [], }).compile(); appController = app.get(AppController); diff --git a/src/backend/src/app.module.ts b/src/backend/src/app.module.ts index e4eefdd..283129a 100644 --- a/src/backend/src/app.module.ts +++ b/src/backend/src/app.module.ts @@ -2,43 +2,49 @@ import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { ScheduleModule } from '@nestjs/schedule'; import { ServeStaticModule } from '@nestjs/serve-static'; -import {ConfigModule, ConfigService} from "@nestjs/config"; -import {TypeOrmModule} from '@nestjs/typeorm'; -import {TrackEntity} from "./track/track.entity"; -import {TrackModule} from "./track/track.module"; -import {PlaylistModule} from "./playlist/playlist.module"; -import {PlaylistEntity} from "./playlist/playlist.entity"; +import { ConfigModule, ConfigService } from '@nestjs/config'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { TrackEntity } from './track/track.entity'; +import { TrackModule } from './track/track.module'; +import { PlaylistModule } from './playlist/playlist.module'; +import { PlaylistEntity } from './playlist/playlist.entity'; import { resolve } from 'path'; -import {EnviromentEnum} from "./enviroment.enum"; +import { EnvironmentEnum } from './environmentEnum'; @Module({ imports: [ ConfigModule.forRoot(), ScheduleModule.forRoot(), TypeOrmModule.forRootAsync({ - imports:[ConfigModule], + imports: [ConfigModule], useFactory: async (configService: ConfigService) => ({ type: 'sqlite', - database: resolve(__dirname, configService.get(EnviromentEnum.DB_PATH)), + database: resolve( + __dirname, + configService.get(EnvironmentEnum.DB_PATH), + ), entities: [TrackEntity, PlaylistEntity], synchronize: true, }), - inject: [ConfigService] + inject: [ConfigService], }), ServeStaticModule.forRootAsync({ - imports:[ConfigModule], - useFactory: async (configService: ConfigService) => ([{ - rootPath: resolve(__dirname, configService.get(EnviromentEnum.FE_PATH)), - exclude: ['/api/(.*)'], - }]), - inject: [ConfigService] + imports: [ConfigModule], + useFactory: async (configService: ConfigService) => [ + { + rootPath: resolve( + __dirname, + configService.get(EnvironmentEnum.FE_PATH), + ), + exclude: ['/api/(.*)'], + }, + ], + inject: [ConfigService], }), TrackModule, PlaylistModule, ], - controllers: [ - AppController, - ], + controllers: [AppController], providers: [], }) export class AppModule {} diff --git a/src/backend/src/enviroment.enum.ts b/src/backend/src/environmentEnum.ts similarity index 77% rename from src/backend/src/enviroment.enum.ts rename to src/backend/src/environmentEnum.ts index c66a005..f5a06d3 100644 --- a/src/backend/src/enviroment.enum.ts +++ b/src/backend/src/environmentEnum.ts @@ -1,4 +1,4 @@ -export enum EnviromentEnum { +export enum EnvironmentEnum { DB_PATH = 'DB_PATH', FE_PATH = 'FE_PATH', DOWNLOADS_PATH = 'DOWNLOADS_PATH', diff --git a/src/backend/src/main.ts b/src/backend/src/main.ts index 84ad2e5..4e6fee2 100644 --- a/src/backend/src/main.ts +++ b/src/backend/src/main.ts @@ -6,8 +6,12 @@ import { resolve } from 'path'; async function bootstrap() { const app = await NestFactory.create(AppModule); app.setGlobalPrefix('api'); - await app.listen(3000); + await app.listen(process.env.PORT || 3000); } bootstrap(); + +if (!process.env.DOWNLOADS_PATH) { + throw new Error('DOWNLOADS_PATH environment variable is missing'); +} const folderName = resolve(__dirname, process.env.DOWNLOADS_PATH); !fs.existsSync(folderName) && fs.mkdirSync(folderName); diff --git a/src/backend/src/shared/utils.service.ts b/src/backend/src/shared/utils.service.ts index dc9b50c..a4556b6 100644 --- a/src/backend/src/shared/utils.service.ts +++ b/src/backend/src/shared/utils.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { resolve } from 'path'; -import { EnviromentEnum } from '../enviroment.enum'; +import { EnvironmentEnum } from '../environmentEnum'; @Injectable() export class UtilsService { @@ -11,7 +11,7 @@ export class UtilsService { return resolve( __dirname, '..', - this.configService.get(EnviromentEnum.DOWNLOADS_PATH), + this.configService.get(EnvironmentEnum.DOWNLOADS_PATH), name, ); } diff --git a/src/backend/src/track/track.service.ts b/src/backend/src/track/track.service.ts index 66bd689..b39f2bb 100644 --- a/src/backend/src/track/track.service.ts +++ b/src/backend/src/track/track.service.ts @@ -12,8 +12,8 @@ import { resolve } from 'path'; import { WebSocketGateway, WebSocketServer } from '@nestjs/websockets'; import { Server } from 'socket.io'; import * as ffmpeg from 'fluent-ffmpeg'; -import { EnviromentEnum } from '../enviroment.enum'; -import {UtilsService} from "../shared/utils.service"; +import { EnvironmentEnum } from '../environmentEnum'; +import { UtilsService } from '../shared/utils.service'; enum WsTrackOperation { New = 'trackNew', @@ -138,7 +138,7 @@ export class TrackService { }).on('error', (err) => reject(err)); ffmpeg(audio) .outputOptions(ffmpegOptions) - .format(this.configService.get(EnviromentEnum.FORMAT)) + .format(this.configService.get(EnvironmentEnum.FORMAT)) .on('error', (err) => reject(err)) .pipe( fs @@ -150,7 +150,7 @@ export class TrackService { } getTrackFileName(track: TrackEntity): string { - return `${track.artist} - ${track.name.replace('/', '')}.${this.configService.get(EnviromentEnum.FORMAT)}`; + return `${track.artist} - ${track.name.replace('/', '')}.${this.configService.get(EnvironmentEnum.FORMAT)}`; } getFolderName(track: TrackEntity, playlist: PlaylistEntity): string {