Skip to content

Commit 0259fec

Browse files
authored
♻️ refactor: refactor data importer to repos (#4974)
* refactor data importer * Update importer.ts * fix tests
1 parent ba095b8 commit 0259fec

File tree

5 files changed

+15
-19
lines changed

5 files changed

+15
-19
lines changed

src/server/services/dataImporter/__tests__/index.test.ts src/database/repositories/dataImporter/__tests__/index.test.ts

+5-12
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// @vitest-environment node
22
import { eq, inArray } from 'drizzle-orm';
3-
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
3+
import { beforeEach, describe, expect, it, vi } from 'vitest';
44

55
import { getTestDBInstance } from '@/database/server/core/dbForTest';
66
import {
@@ -13,22 +13,15 @@ import {
1313
users,
1414
} from '@/database/schemas';
1515
import { CURRENT_CONFIG_VERSION } from '@/migrations';
16-
import { ImportResult } from '@/services/config';
1716
import { ImporterEntryData } from '@/types/importer';
1817

19-
import { DataImporterService } from '../index';
18+
import { DataImporterRepos } from '../index';
2019
import mockImportData from './fixtures/messages.json';
2120

22-
let serverDB = await getTestDBInstance();
23-
24-
vi.mock('@/database/server/core/db', async () => ({
25-
get serverDB() {
26-
return serverDB;
27-
},
28-
}));
21+
const serverDB = await getTestDBInstance();
2922

3023
const userId = 'test-user-id';
31-
let importer: DataImporterService;
24+
let importer: DataImporterRepos;
3225

3326
beforeEach(async () => {
3427
await serverDB.delete(users);
@@ -38,7 +31,7 @@ beforeEach(async () => {
3831
await tx.insert(users).values({ id: userId });
3932
});
4033

41-
importer = new DataImporterService(userId);
34+
importer = new DataImporterRepos(serverDB, userId);
4235
});
4336

4437
describe('DataImporter', () => {

src/server/services/dataImporter/index.ts src/database/repositories/dataImporter/index.ts

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { eq, inArray, sql } from 'drizzle-orm';
22
import { and } from 'drizzle-orm/expressions';
33

4-
import { serverDB } from '@/database/server';
54
import {
65
agents,
76
agentsToSessions,
@@ -12,19 +11,22 @@ import {
1211
sessions,
1312
topics,
1413
} from '@/database/schemas';
14+
import { LobeChatDatabase } from '@/database/type';
1515
import { ImportResult } from '@/services/config';
1616
import { ImporterEntryData } from '@/types/importer';
1717

18-
export class DataImporterService {
18+
export class DataImporterRepos {
1919
private userId: string;
20+
private db: LobeChatDatabase;
2021

2122
/**
2223
* The version of the importer that this module supports
2324
*/
2425
supportVersion = 7;
2526

26-
constructor(userId: string) {
27+
constructor(db: LobeChatDatabase, userId: string) {
2728
this.userId = userId;
29+
this.db = db;
2830
}
2931

3032
importData = async (data: ImporterEntryData) => {
@@ -40,7 +42,7 @@ export class DataImporterService {
4042
let topicIdMap: Record<string, string> = {};
4143

4244
// import sessionGroups
43-
await serverDB.transaction(async (trx) => {
45+
await this.db.transaction(async (trx) => {
4446
if (data.sessionGroups && data.sessionGroups.length > 0) {
4547
const query = await trx.query.sessionGroups.findMany({
4648
where: and(

src/server/routers/lambda/importer.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import { TRPCError } from '@trpc/server';
22
import { z } from 'zod';
33

4+
import { DataImporterRepos } from '@/database/repositories/dataImporter';
5+
import { serverDB } from '@/database/server';
46
import { authedProcedure, router } from '@/libs/trpc';
57
import { S3 } from '@/server/modules/S3';
6-
import { DataImporterService } from '@/server/services/dataImporter';
78
import { ImportResults, ImporterEntryData } from '@/types/importer';
89

910
const importProcedure = authedProcedure.use(async (opts) => {
1011
const { ctx } = opts;
11-
const dataImporterService = new DataImporterService(ctx.userId);
12+
const dataImporterService = new DataImporterRepos(serverDB, ctx.userId);
1213

1314
return opts.next({
1415
ctx: { dataImporterService },

vitest.config.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export default defineConfig({
3131
'**/dist/**',
3232
'**/build/**',
3333
'src/database/server/**/**',
34-
'src/server/services/dataImporter/**/**',
34+
'src/database/repositories/dataImporter/**/**',
3535
],
3636
globals: true,
3737
server: {

0 commit comments

Comments
 (0)