From 0b438fb1343fd53415979c49e32b44d4bd88c78a Mon Sep 17 00:00:00 2001 From: jurgis Date: Sun, 11 Dec 2022 13:17:10 +0200 Subject: [PATCH] expand config --- .env.sample | 8 +++-- .../Client/lrt-api-search.client.ts | 2 +- src/KodiApi/LRT/lrt.service.ts | 2 +- .../RecentSearches/recent-searches.service.ts | 9 ++--- src/RequestLog/request-log.middleware.ts | 3 +- src/Static/static.module.ts | 2 +- src/Static/static.service.ts | 2 +- src/config/config.service.ts | 31 +++++------------ src/config/paths.config.ts | 33 +++++++++++++++++++ src/config/type-orm.config.ts | 16 +++++++++ 10 files changed, 72 insertions(+), 36 deletions(-) create mode 100644 src/config/paths.config.ts create mode 100644 src/config/type-orm.config.ts diff --git a/.env.sample b/.env.sample index 1a70181..40dfcb9 100644 --- a/.env.sample +++ b/.env.sample @@ -1,3 +1,5 @@ -PORT=80 -STATIC_SERVE_FOLDER="../path/to/static/files" -LOG_FILE_REQUESTS="../path/to/log/all/requests.log" +PORT=3000 +DB_PATH=./data/db/db.db +LOG_FILE_REQUESTS=./data/static/static.log +STATIC_SERVE_FOLDER=./data/static +RECENT_SEARCHES_FOLDER=./data/recent \ No newline at end of file diff --git a/src/KodiApi/LRT/LrtApiClient/Client/lrt-api-search.client.ts b/src/KodiApi/LRT/LrtApiClient/Client/lrt-api-search.client.ts index be76c92..5d90adf 100644 --- a/src/KodiApi/LRT/LrtApiClient/Client/lrt-api-search.client.ts +++ b/src/KodiApi/LRT/LrtApiClient/Client/lrt-api-search.client.ts @@ -6,7 +6,7 @@ import { SearchResponseDto } from '../Dto/search-response.dto'; import { SearchResponseItemDto } from '../Dto/search-response-item.dto'; import { InjectRepository } from '@nestjs/typeorm'; import { LrtCategory } from '../Entity/lrt-category.entity'; -import { FindOptionsUtils, Repository } from 'typeorm'; +import { Repository } from 'typeorm'; @Injectable() export class LrtApiSearchClient { diff --git a/src/KodiApi/LRT/lrt.service.ts b/src/KodiApi/LRT/lrt.service.ts index c9af023..c795e95 100644 --- a/src/KodiApi/LRT/lrt.service.ts +++ b/src/KodiApi/LRT/lrt.service.ts @@ -9,7 +9,7 @@ export class LrtService { constructor( private readonly kodiApiResponseFactory: KodiApiResponseFactory, private readonly lrtApiClient: LrtApiClient, - private readonly recentSearchesService: RecentSearchesService + private readonly recentSearchesService: RecentSearchesService, ) {} getMainMenu(): ApiResponse { diff --git a/src/KodiApi/RecentSearches/recent-searches.service.ts b/src/KodiApi/RecentSearches/recent-searches.service.ts index 0b729ff..55cc4e4 100644 --- a/src/KodiApi/RecentSearches/recent-searches.service.ts +++ b/src/KodiApi/RecentSearches/recent-searches.service.ts @@ -8,9 +8,7 @@ import { readFile, writeFile } from 'fs/promises'; @Injectable() export class RecentSearchesService { private readonly configService: ConfigService; - constructor( - private readonly kodiApiResponseFactory: KodiApiResponseFactory, - ) { + constructor(private readonly kodiApiResponseFactory: KodiApiResponseFactory) { this.configService = configService; } async getRecentSearches(module: string, path: string): Promise { @@ -48,6 +46,9 @@ export class RecentSearchesService { } private getFilePath(module: string): string { - return join(this.configService.getRecentSearchesFolder(), module + '.json'); + return join( + this.configService.getPaths().getRecentSearchesFolder(), + module + '.json', + ); } } diff --git a/src/RequestLog/request-log.middleware.ts b/src/RequestLog/request-log.middleware.ts index b1f2f50..892d788 100644 --- a/src/RequestLog/request-log.middleware.ts +++ b/src/RequestLog/request-log.middleware.ts @@ -2,7 +2,6 @@ import { NestMiddleware } from '@nestjs/common'; import { NextFunction } from 'express'; import { Request, Response } from 'express'; import { appendFile } from 'fs'; -import { join } from 'path'; import { configService } from '../config/config.service'; export class RequestLogMiddleware implements NestMiddleware { @@ -33,7 +32,7 @@ export class RequestLogMiddleware implements NestMiddleware { private log(message: string) { const strTime = new Date().toISOString(); - const logFile = configService.getStaticRequestsLogPath(); + const logFile = configService.getPaths().getStaticRequestsLogPath(); appendFile(logFile, strTime + ' ' + message + '\n', function (err) { if (err) { console.log('error logging ' + message); diff --git a/src/Static/static.module.ts b/src/Static/static.module.ts index 2e5c868..144fed7 100644 --- a/src/Static/static.module.ts +++ b/src/Static/static.module.ts @@ -13,7 +13,7 @@ import { configService } from '../config/config.service'; @Module({ imports: [ ServeStaticModule.forRoot({ - rootPath: configService.getStaticFolder(), + rootPath: configService.getPaths().getStaticFolder(), }), ], controllers: [StaticController], diff --git a/src/Static/static.service.ts b/src/Static/static.service.ts index 2562be6..2d625ea 100644 --- a/src/Static/static.service.ts +++ b/src/Static/static.service.ts @@ -18,7 +18,7 @@ export class StaticService { ); } - const path = join(configService.getStaticFolder(), relPath); + const path = join(configService.getPaths().getStaticFolder(), relPath); const stats: Stats | false = await stat(path).catch(() => false); diff --git a/src/config/config.service.ts b/src/config/config.service.ts index 6d81674..e86843d 100644 --- a/src/config/config.service.ts +++ b/src/config/config.service.ts @@ -1,13 +1,14 @@ import * as env from 'dotenv'; import { TypeOrmModuleOptions } from '@nestjs/typeorm'; -import { LrtCategory } from '../KodiApi/LRT/LrtApiClient/Entity/lrt-category.entity'; -import { join } from 'path'; -import { TitleEntity } from '../KodiApi/AllFiles/Entity/title.entity'; -import { FileEntity } from '../KodiApi/AllFiles/Entity/file.entity'; +import { TypeOrmConfig } from './type-orm.config'; +import { PathsConfig } from './paths.config'; env.config(); export class ConfigService { + private typeOrmConfig: TypeOrmConfig = new TypeOrmConfig(this); + private pathsConfig: PathsConfig = new PathsConfig(this); + public getEnv(key: string): any { return process.env[key]; } @@ -19,27 +20,11 @@ export class ConfigService { } public getTypeOrmConfig(): TypeOrmModuleOptions { - return { - type: 'sqlite', - database: this.getEnv('DB_PATH'), - entities: [LrtCategory, TitleEntity, FileEntity], - }; + return this.typeOrmConfig; } - public getStaticRequestsLogPath(): string { - return join(this.getRootPath(), this.getEnv('LOG_FILE_REQUESTS')); - } - - public getStaticFolder(): string { - return join(this.getRootPath(), this.getEnv('STATIC_SERVE_FOLDER')); - } - - public getRecentSearchesFolder(): string { - return join(this.getRootPath(), this.getEnv('RECENT_SEARCHES_FOLDER')); - } - - private getRootPath(): string { - return join(__dirname, '../..'); + public getPaths(): PathsConfig { + return this.pathsConfig; } } diff --git a/src/config/paths.config.ts b/src/config/paths.config.ts new file mode 100644 index 0000000..912c748 --- /dev/null +++ b/src/config/paths.config.ts @@ -0,0 +1,33 @@ +import { ConfigService } from './config.service'; +import { join } from 'path'; + +export class PathsConfig { + constructor(private readonly configService: ConfigService) { + this.configService = configService; + } + + public getStaticRequestsLogPath(): string { + return join( + this.getRootPath(), + this.configService.getEnv('LOG_FILE_REQUESTS'), + ); + } + + public getStaticFolder(): string { + return join( + this.getRootPath(), + this.configService.getEnv('STATIC_SERVE_FOLDER'), + ); + } + + public getRecentSearchesFolder(): string { + return join( + this.getRootPath(), + this.configService.getEnv('RECENT_SEARCHES_FOLDER'), + ); + } + + private getRootPath(): string { + return join(__dirname, '../..'); + } +} diff --git a/src/config/type-orm.config.ts b/src/config/type-orm.config.ts new file mode 100644 index 0000000..4720e63 --- /dev/null +++ b/src/config/type-orm.config.ts @@ -0,0 +1,16 @@ +import { LrtCategory } from '../KodiApi/LRT/LrtApiClient/Entity/lrt-category.entity'; +import { TitleEntity } from '../KodiApi/AllFiles/Entity/title.entity'; +import { FileEntity } from '../KodiApi/AllFiles/Entity/file.entity'; +import { ConfigService } from './config.service'; +import { EntityClassOrSchema } from '@nestjs/typeorm/dist/interfaces/entity-class-or-schema.type'; + +export class TypeOrmConfig { + constructor(configService: ConfigService) { + this.type = 'sqlite'; + this.database = configService.getEnv('DB_PATH'); + this.entities = [LrtCategory, TitleEntity, FileEntity]; + } + type: 'sqlite'; + database: string; + entities: Array; +}