From 9e2ae9f0fafaed0c030d5618a9d8f893ea0dff3a Mon Sep 17 00:00:00 2001 From: Ravinou Date: Sun, 6 Apr 2025 10:08:57 +0200 Subject: [PATCH] =?UTF-8?q?refactor:=20=E2=9A=A1=20create=20config=20servi?= =?UTF-8?q?ce?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- helpers/functions/fileHelpers.ts | 55 ------------------- helpers/functions/index.ts | 1 - helpers/functions/tokenController.ts | 2 +- pages/api/account/getAppriseAlert.ts | 2 +- pages/api/account/getAppriseMode.ts | 2 +- pages/api/account/getAppriseServices.ts | 2 +- pages/api/account/getEmailAlert.ts | 2 +- pages/api/account/sendTestApprise.ts | 2 +- pages/api/account/updateAppriseAlert.ts | 2 +- pages/api/account/updateAppriseMode.ts | 2 +- pages/api/account/updateAppriseServices.ts | 2 +- pages/api/account/updateEmail.ts | 2 +- pages/api/account/updateEmailAlert.ts | 2 +- pages/api/auth/[...nextauth].ts | 2 +- pages/api/cronjob/checkStatus.ts | 2 +- services/config.service.ts | 1 - services/index.ts | 2 + tests/supertest/checkStatus.test.ts | 4 +- tests/supertest/getAppriseAlert.test.ts | 4 +- tests/supertest/getAppriseMode.test.ts | 4 +- tests/supertest/getAppriseServices.test.ts | 4 +- tests/supertest/getEmailAlert.test.ts | 4 +- tests/supertest/updateAppriseAlert.test.ts | 4 +- tests/supertest/updateAppriseMode.test.ts | 4 +- tests/supertest/updateAppriseServices.test.ts | 4 +- 25 files changed, 31 insertions(+), 86 deletions(-) delete mode 100644 helpers/functions/fileHelpers.ts create mode 100644 services/index.ts diff --git a/helpers/functions/fileHelpers.ts b/helpers/functions/fileHelpers.ts deleted file mode 100644 index dd5cb29..0000000 --- a/helpers/functions/fileHelpers.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { promises as fs } from 'fs'; -import path from 'path'; -import { BorgWarehouseUser, Repository } from '~/types/domain/config.types'; -import repoHistory from './repoHistory'; - -// Paths definition -const jsonDirectory = path.join(process.cwd(), '/config'); -const usersFilePath = path.join(jsonDirectory, 'users.json'); -const repoFilePath = path.join(jsonDirectory, 'repo.json'); - -export const getUsersList = async (): Promise => { - try { - const fileContent = await fs.readFile(usersFilePath, 'utf8'); - return JSON.parse(fileContent) || []; - } catch (error) { - console.log('Error reading users.json:', error); - return []; - } -}; - -export const updateUsersList = async (usersList: BorgWarehouseUser[]): Promise => { - try { - await fs.writeFile(usersFilePath, JSON.stringify(usersList, null, 2)); - } catch (error) { - console.log('Error writing users.json:', error); - } -}; - -export const getRepoList = async (): Promise => { - try { - await fs.access(repoFilePath); - } catch { - console.log('repo.json not found, creating a new one.'); - await fs.writeFile(repoFilePath, JSON.stringify([])); - } - - try { - const fileContent = await fs.readFile(repoFilePath, 'utf8'); - return JSON.parse(fileContent) || []; - } catch (error) { - console.log('Error reading repo.json:', error); - return []; - } -}; - -export const updateRepoList = async (repoList: Repository[], history = false): Promise => { - try { - if (history) { - await repoHistory(repoList); - } - await fs.writeFile(repoFilePath, JSON.stringify(repoList, null, 2)); - } catch (error) { - console.log('Error writing repo.json:', error); - } -}; diff --git a/helpers/functions/index.ts b/helpers/functions/index.ts index f3e9ed6..d6cede5 100644 --- a/helpers/functions/index.ts +++ b/helpers/functions/index.ts @@ -1,5 +1,4 @@ export * from './auth'; -export * from './fileHelpers'; export * from './isSshPubKeyDuplicate'; export * from './lanCommandOption'; export * from './nodemailerSMTP'; diff --git a/helpers/functions/tokenController.ts b/helpers/functions/tokenController.ts index da2c151..80ca1bf 100644 --- a/helpers/functions/tokenController.ts +++ b/helpers/functions/tokenController.ts @@ -1,7 +1,7 @@ import { IncomingHttpHeaders } from 'http2'; import { Optional } from '~/types'; import { TokenPermissionsType } from '~/types/api/integration.types'; -import { getUsersList } from './fileHelpers'; +import { getUsersList } from '~/services'; export const tokenController = async ( headers: IncomingHttpHeaders diff --git a/pages/api/account/getAppriseAlert.ts b/pages/api/account/getAppriseAlert.ts index debcbfb..a3870d7 100644 --- a/pages/api/account/getAppriseAlert.ts +++ b/pages/api/account/getAppriseAlert.ts @@ -1,6 +1,6 @@ import { NextApiRequest, NextApiResponse } from 'next'; import { getServerSession } from 'next-auth/next'; -import { getUsersList } from '~/helpers/functions'; +import { getUsersList } from '~/services'; import { ErrorResponse } from '~/types/api/error.types'; import { AppriseAlertResponse } from '~/types/api/notification.types'; import { authOptions } from '../auth/[...nextauth]'; diff --git a/pages/api/account/getAppriseMode.ts b/pages/api/account/getAppriseMode.ts index 9845287..f77b71e 100644 --- a/pages/api/account/getAppriseMode.ts +++ b/pages/api/account/getAppriseMode.ts @@ -1,6 +1,6 @@ import { NextApiRequest, NextApiResponse } from 'next'; import { getServerSession } from 'next-auth/next'; -import { getUsersList } from '~/helpers/functions'; +import { getUsersList } from '~/services'; import { ErrorResponse } from '~/types/api/error.types'; import { AppriseModeDTO } from '~/types/api/notification.types'; import { authOptions } from '../auth/[...nextauth]'; diff --git a/pages/api/account/getAppriseServices.ts b/pages/api/account/getAppriseServices.ts index 28aa498..9f80839 100644 --- a/pages/api/account/getAppriseServices.ts +++ b/pages/api/account/getAppriseServices.ts @@ -1,6 +1,6 @@ import { NextApiRequest, NextApiResponse } from 'next'; import { getServerSession } from 'next-auth/next'; -import { getUsersList } from '~/helpers/functions'; +import { getUsersList } from '~/services'; import { ErrorResponse } from '~/types/api/error.types'; import { AppriseServicesDTO } from '~/types/api/notification.types'; import { authOptions } from '../auth/[...nextauth]'; diff --git a/pages/api/account/getEmailAlert.ts b/pages/api/account/getEmailAlert.ts index 2090dce..55abb8b 100644 --- a/pages/api/account/getEmailAlert.ts +++ b/pages/api/account/getEmailAlert.ts @@ -1,7 +1,7 @@ //Lib import { NextApiRequest, NextApiResponse } from 'next'; import { getServerSession } from 'next-auth/next'; -import { getUsersList } from '~/helpers/functions'; +import { getUsersList } from '~/services'; import { ErrorResponse } from '~/types/api/error.types'; import { EmailAlertDTO } from '~/types/api/notification.types'; import { authOptions } from '../auth/[...nextauth]'; diff --git a/pages/api/account/sendTestApprise.ts b/pages/api/account/sendTestApprise.ts index 0415065..8bf0406 100644 --- a/pages/api/account/sendTestApprise.ts +++ b/pages/api/account/sendTestApprise.ts @@ -2,7 +2,7 @@ import { exec } from 'child_process'; import { NextApiRequest, NextApiResponse } from 'next'; import { getServerSession } from 'next-auth/next'; import { promisify } from 'util'; -import { getUsersList } from '~/helpers/functions'; +import { getUsersList } from '~/services'; import { ErrorResponse, SuccessResponse } from '~/types/api/error.types'; import { authOptions } from '../auth/[...nextauth]'; diff --git a/pages/api/account/updateAppriseAlert.ts b/pages/api/account/updateAppriseAlert.ts index 223616c..73325fd 100644 --- a/pages/api/account/updateAppriseAlert.ts +++ b/pages/api/account/updateAppriseAlert.ts @@ -1,5 +1,5 @@ // Imports -import { getUsersList, updateUsersList } from '~/helpers/functions/fileHelpers'; +import { getUsersList, updateUsersList } from '~/services'; import { authOptions } from '../auth/[...nextauth]'; import { getServerSession } from 'next-auth/next'; import { NextApiRequest, NextApiResponse } from 'next'; diff --git a/pages/api/account/updateAppriseMode.ts b/pages/api/account/updateAppriseMode.ts index b9afdaa..9d01cfe 100644 --- a/pages/api/account/updateAppriseMode.ts +++ b/pages/api/account/updateAppriseMode.ts @@ -1,4 +1,4 @@ -import { getUsersList, updateUsersList } from '~/helpers/functions/fileHelpers'; +import { getUsersList, updateUsersList } from '~/services'; import { authOptions } from '../auth/[...nextauth]'; import { getServerSession } from 'next-auth/next'; import { NextApiRequest, NextApiResponse } from 'next'; diff --git a/pages/api/account/updateAppriseServices.ts b/pages/api/account/updateAppriseServices.ts index d646094..4ffcf8e 100644 --- a/pages/api/account/updateAppriseServices.ts +++ b/pages/api/account/updateAppriseServices.ts @@ -4,7 +4,7 @@ import { getServerSession } from 'next-auth/next'; import { NextApiRequest, NextApiResponse } from 'next'; import { AppriseServicesDTO } from '~/types/api/notification.types'; import { ErrorResponse } from '~/types/api/error.types'; -import { getUsersList, updateUsersList } from '~/helpers/functions/fileHelpers'; +import { getUsersList, updateUsersList } from '~/services'; export default async function handler( req: NextApiRequest & { body: AppriseServicesDTO }, diff --git a/pages/api/account/updateEmail.ts b/pages/api/account/updateEmail.ts index 549e105..79ea34d 100644 --- a/pages/api/account/updateEmail.ts +++ b/pages/api/account/updateEmail.ts @@ -1,4 +1,4 @@ -import { getUsersList, updateUsersList } from '~/helpers/functions/fileHelpers'; +import { getUsersList, updateUsersList } from '~/services'; import { authOptions } from '../auth/[...nextauth]'; import { getServerSession } from 'next-auth/next'; import { NextApiRequest, NextApiResponse } from 'next'; diff --git a/pages/api/account/updateEmailAlert.ts b/pages/api/account/updateEmailAlert.ts index a98d0c8..492d844 100644 --- a/pages/api/account/updateEmailAlert.ts +++ b/pages/api/account/updateEmailAlert.ts @@ -1,4 +1,4 @@ -import { getUsersList, updateUsersList } from '~/helpers/functions/fileHelpers'; +import { getUsersList, updateUsersList } from '~/services'; import { authOptions } from '../auth/[...nextauth]'; import { getServerSession } from 'next-auth/next'; import { EmailAlertDTO } from '~/types/api/notification.types'; diff --git a/pages/api/auth/[...nextauth].ts b/pages/api/auth/[...nextauth].ts index 6b27722..7dc18b1 100644 --- a/pages/api/auth/[...nextauth].ts +++ b/pages/api/auth/[...nextauth].ts @@ -2,7 +2,7 @@ import fs from 'fs'; import NextAuth, { NextAuthOptions, RequestInternal, User } from 'next-auth'; import CredentialsProvider from 'next-auth/providers/credentials'; import path from 'path'; -import { getUsersList } from '~/helpers/functions'; +import { getUsersList } from '~/services'; import { verifyPassword } from '../../../helpers/functions/auth'; const logLogin = async (message: string, req: Partial, success = false) => { diff --git a/pages/api/cronjob/checkStatus.ts b/pages/api/cronjob/checkStatus.ts index fb19958..de098cf 100644 --- a/pages/api/cronjob/checkStatus.ts +++ b/pages/api/cronjob/checkStatus.ts @@ -3,7 +3,7 @@ import { NextApiRequest, NextApiResponse } from 'next'; import { exec as execCallback } from 'node:child_process'; import { promisify } from 'util'; import ApiResponse from '~/helpers/functions/apiResponse'; -import { getRepoList, getUsersList, updateRepoList } from '~/helpers/functions/fileHelpers'; +import { getRepoList, getUsersList, updateRepoList } from '~/services'; import nodemailerSMTP from '~/helpers/functions/nodemailerSMTP'; import { getLastSaveListShell } from '~/helpers/functions/shell.utils'; import emailAlertStatus from '~/helpers/templates/emailAlertStatus'; diff --git a/services/config.service.ts b/services/config.service.ts index f1f969d..8e694b9 100644 --- a/services/config.service.ts +++ b/services/config.service.ts @@ -1,4 +1,3 @@ -// dbHelper.ts import { Low } from 'lowdb'; import { JSONFile } from 'lowdb/node'; import path from 'path'; diff --git a/services/index.ts b/services/index.ts new file mode 100644 index 0000000..97b4705 --- /dev/null +++ b/services/index.ts @@ -0,0 +1,2 @@ +export * from './config.service'; +export * from './history.service'; diff --git a/tests/supertest/checkStatus.test.ts b/tests/supertest/checkStatus.test.ts index be43e61..9c7d415 100644 --- a/tests/supertest/checkStatus.test.ts +++ b/tests/supertest/checkStatus.test.ts @@ -1,10 +1,10 @@ import { createMocks } from 'node-mocks-http'; import handler from '~/pages/api/cronjob/checkStatus'; -import { getRepoList, getUsersList, updateRepoList } from '~/helpers/functions/fileHelpers'; +import { getRepoList, getUsersList, updateRepoList } from '~/services'; import { getLastSaveListShell } from '~/helpers/functions/shell.utils'; import nodemailerSMTP from '~/helpers/functions/nodemailerSMTP'; -jest.mock('~/helpers/functions/fileHelpers', () => ({ +jest.mock('~/services', () => ({ getRepoList: jest.fn(), getUsersList: jest.fn(), updateRepoList: jest.fn(), diff --git a/tests/supertest/getAppriseAlert.test.ts b/tests/supertest/getAppriseAlert.test.ts index a99d8e7..af24381 100644 --- a/tests/supertest/getAppriseAlert.test.ts +++ b/tests/supertest/getAppriseAlert.test.ts @@ -1,10 +1,10 @@ import { getServerSession } from 'next-auth/next'; import { createMocks } from 'node-mocks-http'; -import { getUsersList } from '~/helpers/functions'; +import { getUsersList } from '~/services'; import handler from '~/pages/api/account/getAppriseAlert'; jest.mock('next-auth/next'); -jest.mock('~/helpers/functions/fileHelpers', () => ({ +jest.mock('~/services', () => ({ getUsersList: jest.fn(), })); diff --git a/tests/supertest/getAppriseMode.test.ts b/tests/supertest/getAppriseMode.test.ts index d4490c9..a180a71 100644 --- a/tests/supertest/getAppriseMode.test.ts +++ b/tests/supertest/getAppriseMode.test.ts @@ -1,10 +1,10 @@ import { getServerSession } from 'next-auth/next'; import { createMocks } from 'node-mocks-http'; -import { getUsersList } from '~/helpers/functions'; +import { getUsersList } from '~/services'; import handler from '~/pages/api/account/getAppriseMode'; jest.mock('next-auth/next'); -jest.mock('~/helpers/functions/fileHelpers', () => ({ +jest.mock('~/services', () => ({ getUsersList: jest.fn(), })); diff --git a/tests/supertest/getAppriseServices.test.ts b/tests/supertest/getAppriseServices.test.ts index c40b054..a228c2d 100644 --- a/tests/supertest/getAppriseServices.test.ts +++ b/tests/supertest/getAppriseServices.test.ts @@ -1,10 +1,10 @@ import { getServerSession } from 'next-auth/next'; import { createMocks } from 'node-mocks-http'; -import { getUsersList } from '~/helpers/functions'; +import { getUsersList } from '~/services'; import handler from '~/pages/api/account/getAppriseServices'; jest.mock('next-auth/next'); -jest.mock('~/helpers/functions/fileHelpers', () => ({ +jest.mock('~/services', () => ({ getUsersList: jest.fn(), })); diff --git a/tests/supertest/getEmailAlert.test.ts b/tests/supertest/getEmailAlert.test.ts index 4ec6cad..ffd7156 100644 --- a/tests/supertest/getEmailAlert.test.ts +++ b/tests/supertest/getEmailAlert.test.ts @@ -3,10 +3,10 @@ import handler from '~/pages/api/account/getEmailAlert'; import { getServerSession } from 'next-auth/next'; import { promises as fs } from 'fs'; import path from 'path'; -import { getUsersList } from '~/helpers/functions'; +import { getUsersList } from '~/services'; jest.mock('next-auth/next'); -jest.mock('~/helpers/functions/fileHelpers', () => ({ +jest.mock('~/services', () => ({ getUsersList: jest.fn(), })); diff --git a/tests/supertest/updateAppriseAlert.test.ts b/tests/supertest/updateAppriseAlert.test.ts index 6e0b182..f68d09a 100644 --- a/tests/supertest/updateAppriseAlert.test.ts +++ b/tests/supertest/updateAppriseAlert.test.ts @@ -1,10 +1,10 @@ import { createMocks } from 'node-mocks-http'; import handler from '~/pages/api/account/updateAppriseAlert'; import { getServerSession } from 'next-auth/next'; -import { getUsersList, updateUsersList } from '~/helpers/functions/fileHelpers'; +import { getUsersList, updateUsersList } from '~/services'; jest.mock('next-auth/next'); -jest.mock('~/helpers/functions/fileHelpers', () => ({ +jest.mock('~/services', () => ({ __esModule: true, getUsersList: jest.fn(), updateUsersList: jest.fn(), diff --git a/tests/supertest/updateAppriseMode.test.ts b/tests/supertest/updateAppriseMode.test.ts index dbdacf5..de20a93 100644 --- a/tests/supertest/updateAppriseMode.test.ts +++ b/tests/supertest/updateAppriseMode.test.ts @@ -1,10 +1,10 @@ import { createMocks } from 'node-mocks-http'; import handler from '~/pages/api/account/updateAppriseMode'; import { getServerSession } from 'next-auth/next'; -import { getUsersList, updateUsersList } from '~/helpers/functions/fileHelpers'; +import { getUsersList, updateUsersList } from '~/services'; jest.mock('next-auth/next'); -jest.mock('~/helpers/functions/fileHelpers', () => ({ +jest.mock('~/services', () => ({ getUsersList: jest.fn(), updateUsersList: jest.fn(), })); diff --git a/tests/supertest/updateAppriseServices.test.ts b/tests/supertest/updateAppriseServices.test.ts index e8a85a0..23e2888 100644 --- a/tests/supertest/updateAppriseServices.test.ts +++ b/tests/supertest/updateAppriseServices.test.ts @@ -1,11 +1,11 @@ import { createMocks } from 'node-mocks-http'; import handler from '~/pages/api/account/updateAppriseServices'; import { getServerSession } from 'next-auth/next'; -import { getUsersList, updateUsersList } from '~/helpers/functions/fileHelpers'; +import { getUsersList, updateUsersList } from '~/services'; // Mock imports jest.mock('next-auth/next'); -jest.mock('~/helpers/functions/fileHelpers', () => ({ +jest.mock('~/services', () => ({ getUsersList: jest.fn(), updateUsersList: jest.fn(), }));