refactor(backend): refactor backend code

This commit is contained in:
raiper34
2024-09-30 14:00:12 +02:00
parent 117110fae9
commit 7359a13a7c
7 changed files with 40 additions and 30 deletions
+1
View File
@@ -2,3 +2,4 @@ DB_PATH=./config/db.sqlite
FE_PATH=../frontend/browser FE_PATH=../frontend/browser
DOWNLOADS_PATH=./downloads DOWNLOADS_PATH=./downloads
FORMAT=mp3 FORMAT=mp3
PORT=3000
+1 -2
View File
@@ -1,6 +1,5 @@
import { Test, TestingModule } from '@nestjs/testing'; import { Test, TestingModule } from '@nestjs/testing';
import { AppController } from './app.controller'; import { AppController } from './app.controller';
import { AppService } from './app.service';
describe('AppController', () => { describe('AppController', () => {
let appController: AppController; let appController: AppController;
@@ -8,7 +7,7 @@ describe('AppController', () => {
beforeEach(async () => { beforeEach(async () => {
const app: TestingModule = await Test.createTestingModule({ const app: TestingModule = await Test.createTestingModule({
controllers: [AppController], controllers: [AppController],
providers: [AppService], providers: [],
}).compile(); }).compile();
appController = app.get<AppController>(AppController); appController = app.get<AppController>(AppController);
+21 -15
View File
@@ -2,14 +2,14 @@ import { Module } from '@nestjs/common';
import { AppController } from './app.controller'; import { AppController } from './app.controller';
import { ScheduleModule } from '@nestjs/schedule'; import { ScheduleModule } from '@nestjs/schedule';
import { ServeStaticModule } from '@nestjs/serve-static'; import { ServeStaticModule } from '@nestjs/serve-static';
import {ConfigModule, ConfigService} from "@nestjs/config"; import { ConfigModule, ConfigService } from '@nestjs/config';
import { TypeOrmModule } from '@nestjs/typeorm'; import { TypeOrmModule } from '@nestjs/typeorm';
import {TrackEntity} from "./track/track.entity"; import { TrackEntity } from './track/track.entity';
import {TrackModule} from "./track/track.module"; import { TrackModule } from './track/track.module';
import {PlaylistModule} from "./playlist/playlist.module"; import { PlaylistModule } from './playlist/playlist.module';
import {PlaylistEntity} from "./playlist/playlist.entity"; import { PlaylistEntity } from './playlist/playlist.entity';
import { resolve } from 'path'; import { resolve } from 'path';
import {EnviromentEnum} from "./enviroment.enum"; import { EnvironmentEnum } from './environmentEnum';
@Module({ @Module({
imports: [ imports: [
@@ -19,26 +19,32 @@ import {EnviromentEnum} from "./enviroment.enum";
imports: [ConfigModule], imports: [ConfigModule],
useFactory: async (configService: ConfigService) => ({ useFactory: async (configService: ConfigService) => ({
type: 'sqlite', type: 'sqlite',
database: resolve(__dirname, configService.get<string>(EnviromentEnum.DB_PATH)), database: resolve(
__dirname,
configService.get<string>(EnvironmentEnum.DB_PATH),
),
entities: [TrackEntity, PlaylistEntity], entities: [TrackEntity, PlaylistEntity],
synchronize: true, synchronize: true,
}), }),
inject: [ConfigService] inject: [ConfigService],
}), }),
ServeStaticModule.forRootAsync({ ServeStaticModule.forRootAsync({
imports: [ConfigModule], imports: [ConfigModule],
useFactory: async (configService: ConfigService) => ([{ useFactory: async (configService: ConfigService) => [
rootPath: resolve(__dirname, configService.get<string>(EnviromentEnum.FE_PATH)), {
rootPath: resolve(
__dirname,
configService.get<string>(EnvironmentEnum.FE_PATH),
),
exclude: ['/api/(.*)'], exclude: ['/api/(.*)'],
}]), },
inject: [ConfigService] ],
inject: [ConfigService],
}), }),
TrackModule, TrackModule,
PlaylistModule, PlaylistModule,
], ],
controllers: [ controllers: [AppController],
AppController,
],
providers: [], providers: [],
}) })
export class AppModule {} export class AppModule {}
@@ -1,4 +1,4 @@
export enum EnviromentEnum { export enum EnvironmentEnum {
DB_PATH = 'DB_PATH', DB_PATH = 'DB_PATH',
FE_PATH = 'FE_PATH', FE_PATH = 'FE_PATH',
DOWNLOADS_PATH = 'DOWNLOADS_PATH', DOWNLOADS_PATH = 'DOWNLOADS_PATH',
+5 -1
View File
@@ -6,8 +6,12 @@ import { resolve } from 'path';
async function bootstrap() { async function bootstrap() {
const app = await NestFactory.create(AppModule); const app = await NestFactory.create(AppModule);
app.setGlobalPrefix('api'); app.setGlobalPrefix('api');
await app.listen(3000); await app.listen(process.env.PORT || 3000);
} }
bootstrap(); bootstrap();
if (!process.env.DOWNLOADS_PATH) {
throw new Error('DOWNLOADS_PATH environment variable is missing');
}
const folderName = resolve(__dirname, process.env.DOWNLOADS_PATH); const folderName = resolve(__dirname, process.env.DOWNLOADS_PATH);
!fs.existsSync(folderName) && fs.mkdirSync(folderName); !fs.existsSync(folderName) && fs.mkdirSync(folderName);
+2 -2
View File
@@ -1,7 +1,7 @@
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
import { ConfigService } from '@nestjs/config'; import { ConfigService } from '@nestjs/config';
import { resolve } from 'path'; import { resolve } from 'path';
import { EnviromentEnum } from '../enviroment.enum'; import { EnvironmentEnum } from '../environmentEnum';
@Injectable() @Injectable()
export class UtilsService { export class UtilsService {
@@ -11,7 +11,7 @@ export class UtilsService {
return resolve( return resolve(
__dirname, __dirname,
'..', '..',
this.configService.get<string>(EnviromentEnum.DOWNLOADS_PATH), this.configService.get<string>(EnvironmentEnum.DOWNLOADS_PATH),
name, name,
); );
} }
+4 -4
View File
@@ -12,8 +12,8 @@ import { resolve } from 'path';
import { WebSocketGateway, WebSocketServer } from '@nestjs/websockets'; import { WebSocketGateway, WebSocketServer } from '@nestjs/websockets';
import { Server } from 'socket.io'; import { Server } from 'socket.io';
import * as ffmpeg from 'fluent-ffmpeg'; import * as ffmpeg from 'fluent-ffmpeg';
import { EnviromentEnum } from '../enviroment.enum'; import { EnvironmentEnum } from '../environmentEnum';
import {UtilsService} from "../shared/utils.service"; import { UtilsService } from '../shared/utils.service';
enum WsTrackOperation { enum WsTrackOperation {
New = 'trackNew', New = 'trackNew',
@@ -138,7 +138,7 @@ export class TrackService {
}).on('error', (err) => reject(err)); }).on('error', (err) => reject(err));
ffmpeg(audio) ffmpeg(audio)
.outputOptions(ffmpegOptions) .outputOptions(ffmpegOptions)
.format(this.configService.get<string>(EnviromentEnum.FORMAT)) .format(this.configService.get<string>(EnvironmentEnum.FORMAT))
.on('error', (err) => reject(err)) .on('error', (err) => reject(err))
.pipe( .pipe(
fs fs
@@ -150,7 +150,7 @@ export class TrackService {
} }
getTrackFileName(track: TrackEntity): string { getTrackFileName(track: TrackEntity): string {
return `${track.artist} - ${track.name.replace('/', '')}.${this.configService.get<string>(EnviromentEnum.FORMAT)}`; return `${track.artist} - ${track.name.replace('/', '')}.${this.configService.get<string>(EnvironmentEnum.FORMAT)}`;
} }
getFolderName(track: TrackEntity, playlist: PlaylistEntity): string { getFolderName(track: TrackEntity, playlist: PlaylistEntity): string {