refactor(backend): refactor backend code
This commit is contained in:
@@ -2,3 +2,4 @@ DB_PATH=./config/db.sqlite
|
||||
FE_PATH=../frontend/browser
|
||||
DOWNLOADS_PATH=./downloads
|
||||
FORMAT=mp3
|
||||
PORT=3000
|
||||
@@ -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>(AppController);
|
||||
|
||||
@@ -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<string>(EnviromentEnum.DB_PATH)),
|
||||
database: resolve(
|
||||
__dirname,
|
||||
configService.get<string>(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<string>(EnviromentEnum.FE_PATH)),
|
||||
imports: [ConfigModule],
|
||||
useFactory: async (configService: ConfigService) => [
|
||||
{
|
||||
rootPath: resolve(
|
||||
__dirname,
|
||||
configService.get<string>(EnvironmentEnum.FE_PATH),
|
||||
),
|
||||
exclude: ['/api/(.*)'],
|
||||
}]),
|
||||
inject: [ConfigService]
|
||||
},
|
||||
],
|
||||
inject: [ConfigService],
|
||||
}),
|
||||
TrackModule,
|
||||
PlaylistModule,
|
||||
],
|
||||
controllers: [
|
||||
AppController,
|
||||
],
|
||||
controllers: [AppController],
|
||||
providers: [],
|
||||
})
|
||||
export class AppModule {}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
export enum EnviromentEnum {
|
||||
export enum EnvironmentEnum {
|
||||
DB_PATH = 'DB_PATH',
|
||||
FE_PATH = 'FE_PATH',
|
||||
DOWNLOADS_PATH = 'DOWNLOADS_PATH',
|
||||
@@ -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);
|
||||
|
||||
@@ -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<string>(EnviromentEnum.DOWNLOADS_PATH),
|
||||
this.configService.get<string>(EnvironmentEnum.DOWNLOADS_PATH),
|
||||
name,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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<string>(EnviromentEnum.FORMAT))
|
||||
.format(this.configService.get<string>(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<string>(EnviromentEnum.FORMAT)}`;
|
||||
return `${track.artist} - ${track.name.replace('/', '')}.${this.configService.get<string>(EnvironmentEnum.FORMAT)}`;
|
||||
}
|
||||
|
||||
getFolderName(track: TrackEntity, playlist: PlaylistEntity): string {
|
||||
|
||||
Reference in New Issue
Block a user