Skip to content

Commit a00fd9d

Browse files
authored
🐛 fix(db): desktop local db can't vectorization (#8830)
1 parent 24a5e0d commit a00fd9d

File tree

18 files changed

+87
-65
lines changed

18 files changed

+87
-65
lines changed

src/app/(backend)/api/webhooks/casdoor/route.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { NextResponse } from 'next/server';
22

33
import { authEnv } from '@/config/auth';
4+
import { serverDB } from '@/database/server';
45
import { pino } from '@/libs/logger';
56
import { NextAuthUserService } from '@/server/services/nextAuthUser';
67

@@ -18,7 +19,7 @@ export const POST = async (req: Request): Promise<NextResponse> => {
1819

1920
const { action, object } = payload;
2021

21-
const nextAuthUserService = new NextAuthUserService();
22+
const nextAuthUserService = new NextAuthUserService(serverDB);
2223
switch (action) {
2324
case 'update-user': {
2425
return nextAuthUserService.safeUpdateUser(

src/app/(backend)/api/webhooks/clerk/route.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { NextResponse } from 'next/server';
22

33
import { authEnv } from '@/config/auth';
44
import { isServerMode } from '@/const/version';
5+
import { serverDB } from '@/database/server';
56
import { pino } from '@/libs/logger';
67
import { UserService } from '@/server/services/user';
78

@@ -25,7 +26,7 @@ export const POST = async (req: Request): Promise<NextResponse> => {
2526

2627
pino.trace(`clerk webhook payload: ${{ data, type }}`);
2728

28-
const userService = new UserService();
29+
const userService = new UserService(serverDB);
2930
switch (type) {
3031
case 'user.created': {
3132
pino.info('creating user due to clerk webhook');

src/app/(backend)/api/webhooks/logto/route.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { NextResponse } from 'next/server';
22

33
import { authEnv } from '@/config/auth';
4+
import { serverDB } from '@/database/server';
45
import { pino } from '@/libs/logger';
56
import { NextAuthUserService } from '@/server/services/nextAuthUser';
67

@@ -20,7 +21,7 @@ export const POST = async (req: Request): Promise<NextResponse> => {
2021

2122
pino.trace(`logto webhook payload: ${{ data, event }}`);
2223

23-
const nextAuthUserService = new NextAuthUserService();
24+
const nextAuthUserService = new NextAuthUserService(serverDB);
2425
switch (event) {
2526
case 'User.Data.Updated': {
2627
return nextAuthUserService.safeUpdateUser(

src/app/(backend)/webapi/user/avatar/[id]/[image]/route.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { serverDB } from '@/database/server';
12
import { UserService } from '@/server/services/user';
23

34
export const runtime = 'nodejs';
@@ -31,7 +32,7 @@ export const GET = async (req: Request, segmentData: { params: Params }) => {
3132
try {
3233
const params = await segmentData.params;
3334
const type = getContentType(params.image);
34-
const userService = new UserService();
35+
const userService = new UserService(serverDB);
3536

3637
const userAvatar = await userService.getUserAvatar(params.id, params.image);
3738
if (!userAvatar) {

src/database/server/models/ragEval/dataset.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,34 @@
11
import { and, desc, eq } from 'drizzle-orm';
22

33
import { NewEvalDatasetsItem, evalDatasets } from '@/database/schemas';
4-
import { serverDB } from '@/database/server';
4+
import { LobeChatDatabase } from '@/database/type';
55
import { RAGEvalDataSetItem } from '@/types/eval';
66

77
export class EvalDatasetModel {
88
private userId: string;
9+
private db: LobeChatDatabase;
910

10-
constructor(userId: string) {
11+
constructor(db: LobeChatDatabase, userId: string) {
12+
this.db = db;
1113
this.userId = userId;
1214
}
1315

1416
create = async (params: NewEvalDatasetsItem) => {
15-
const [result] = await serverDB
17+
const [result] = await this.db
1618
.insert(evalDatasets)
1719
.values({ ...params, userId: this.userId })
1820
.returning();
1921
return result;
2022
};
2123

2224
delete = async (id: number) => {
23-
return serverDB
25+
return this.db
2426
.delete(evalDatasets)
2527
.where(and(eq(evalDatasets.id, id), eq(evalDatasets.userId, this.userId)));
2628
};
2729

2830
query = async (knowledgeBaseId: string): Promise<RAGEvalDataSetItem[]> => {
29-
return serverDB
31+
return this.db
3032
.select({
3133
createdAt: evalDatasets.createdAt,
3234
description: evalDatasets.description,
@@ -45,13 +47,13 @@ export class EvalDatasetModel {
4547
};
4648

4749
findById = async (id: number) => {
48-
return serverDB.query.evalDatasets.findFirst({
50+
return this.db.query.evalDatasets.findFirst({
4951
where: and(eq(evalDatasets.id, id), eq(evalDatasets.userId, this.userId)),
5052
});
5153
};
5254

5355
update = async (id: number, value: Partial<NewEvalDatasetsItem>) => {
54-
return serverDB
56+
return this.db
5557
.update(evalDatasets)
5658
.set({ ...value, updatedAt: new Date() })
5759
.where(and(eq(evalDatasets.id, id), eq(evalDatasets.userId, this.userId)));

src/database/server/models/ragEval/datasetRecord.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,28 @@
11
import { and, eq, inArray } from 'drizzle-orm';
22

33
import { NewEvalDatasetRecordsItem, evalDatasetRecords, files } from '@/database/schemas';
4-
import { serverDB } from '@/database/server';
4+
import { LobeChatDatabase } from '@/database/type';
55
import { EvalDatasetRecordRefFile } from '@/types/eval';
66

77
export class EvalDatasetRecordModel {
88
private userId: string;
9+
private db: LobeChatDatabase;
910

10-
constructor(userId: string) {
11+
constructor(db: LobeChatDatabase, userId: string) {
12+
this.db = db;
1113
this.userId = userId;
1214
}
1315

1416
create = async (params: NewEvalDatasetRecordsItem) => {
15-
const [result] = await serverDB
17+
const [result] = await this.db
1618
.insert(evalDatasetRecords)
1719
.values({ ...params, userId: this.userId })
1820
.returning();
1921
return result;
2022
};
2123

2224
batchCreate = async (params: NewEvalDatasetRecordsItem[]) => {
23-
const [result] = await serverDB
25+
const [result] = await this.db
2426
.insert(evalDatasetRecords)
2527
.values(params.map((item) => ({ ...item, userId: this.userId })))
2628
.returning();
@@ -29,21 +31,21 @@ export class EvalDatasetRecordModel {
2931
};
3032

3133
delete = async (id: number) => {
32-
return serverDB
34+
return this.db
3335
.delete(evalDatasetRecords)
3436
.where(and(eq(evalDatasetRecords.id, id), eq(evalDatasetRecords.userId, this.userId)));
3537
};
3638

3739
query = async (datasetId: number) => {
38-
const list = await serverDB.query.evalDatasetRecords.findMany({
40+
const list = await this.db.query.evalDatasetRecords.findMany({
3941
where: and(
4042
eq(evalDatasetRecords.datasetId, datasetId),
4143
eq(evalDatasetRecords.userId, this.userId),
4244
),
4345
});
4446
const fileList = list.flatMap((item) => item.referenceFiles).filter(Boolean) as string[];
4547

46-
const fileItems = await serverDB
48+
const fileItems = await this.db
4749
.select({ fileType: files.fileType, id: files.id, name: files.name })
4850
.from(files)
4951
.where(and(inArray(files.id, fileList), eq(files.userId, this.userId)));
@@ -59,7 +61,7 @@ export class EvalDatasetRecordModel {
5961
};
6062

6163
findByDatasetId = async (datasetId: number) => {
62-
return serverDB.query.evalDatasetRecords.findMany({
64+
return this.db.query.evalDatasetRecords.findMany({
6365
where: and(
6466
eq(evalDatasetRecords.datasetId, datasetId),
6567
eq(evalDatasetRecords.userId, this.userId),
@@ -68,13 +70,13 @@ export class EvalDatasetRecordModel {
6870
};
6971

7072
findById = async (id: number) => {
71-
return serverDB.query.evalDatasetRecords.findFirst({
73+
return this.db.query.evalDatasetRecords.findFirst({
7274
where: and(eq(evalDatasetRecords.id, id), eq(evalDatasetRecords.userId, this.userId)),
7375
});
7476
};
7577

7678
update = async (id: number, value: Partial<NewEvalDatasetRecordsItem>) => {
77-
return serverDB
79+
return this.db
7880
.update(evalDatasetRecords)
7981
.set(value)
8082
.where(and(eq(evalDatasetRecords.id, id), eq(evalDatasetRecords.userId, this.userId)));

src/database/server/models/ragEval/evaluation.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,32 +6,34 @@ import {
66
evalEvaluation,
77
evaluationRecords,
88
} from '@/database/schemas';
9-
import { serverDB } from '@/database/server';
9+
import { LobeChatDatabase } from '@/database/type';
1010
import { EvalEvaluationStatus, RAGEvalEvaluationItem } from '@/types/eval';
1111

1212
export class EvalEvaluationModel {
1313
private userId: string;
14+
private db: LobeChatDatabase;
1415

15-
constructor(userId: string) {
16+
constructor(db: LobeChatDatabase, userId: string) {
17+
this.db = db;
1618
this.userId = userId;
1719
}
1820

1921
create = async (params: NewEvalEvaluationItem) => {
20-
const [result] = await serverDB
22+
const [result] = await this.db
2123
.insert(evalEvaluation)
2224
.values({ ...params, userId: this.userId })
2325
.returning();
2426
return result;
2527
};
2628

2729
delete = async (id: number) => {
28-
return serverDB
30+
return this.db
2931
.delete(evalEvaluation)
3032
.where(and(eq(evalEvaluation.id, id), eq(evalEvaluation.userId, this.userId)));
3133
};
3234

3335
queryByKnowledgeBaseId = async (knowledgeBaseId: string) => {
34-
const evaluations = await serverDB
36+
const evaluations = await this.db
3537
.select({
3638
createdAt: evalEvaluation.createdAt,
3739
dataset: {
@@ -57,7 +59,7 @@ export class EvalEvaluationModel {
5759
// 然后查询每个评估的记录统计
5860
const evaluationIds = evaluations.map((evals) => evals.id);
5961

60-
const recordStats = await serverDB
62+
const recordStats = await this.db
6163
.select({
6264
evaluationId: evaluationRecords.evaluationId,
6365
success: count(evaluationRecords.status).if(
@@ -82,13 +84,13 @@ export class EvalEvaluationModel {
8284
};
8385

8486
findById = async (id: number) => {
85-
return serverDB.query.evalEvaluation.findFirst({
87+
return this.db.query.evalEvaluation.findFirst({
8688
where: and(eq(evalEvaluation.id, id), eq(evalEvaluation.userId, this.userId)),
8789
});
8890
};
8991

9092
update = async (id: number, value: Partial<NewEvalEvaluationItem>) => {
91-
return serverDB
93+
return this.db
9294
.update(evalEvaluation)
9395
.set(value)
9496
.where(and(eq(evalEvaluation.id, id), eq(evalEvaluation.userId, this.userId)));

src/database/server/models/ragEval/evaluationRecord.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,40 @@
11
import { and, eq } from 'drizzle-orm';
22

33
import { NewEvaluationRecordsItem, evaluationRecords } from '@/database/schemas';
4-
import { serverDB } from '@/database/server';
4+
import { LobeChatDatabase } from '@/database/type';
55

66
export class EvaluationRecordModel {
77
private userId: string;
8+
private db: LobeChatDatabase;
89

9-
constructor(userId: string) {
10+
constructor(db: LobeChatDatabase, userId: string) {
11+
this.db = db;
1012
this.userId = userId;
1113
}
1214

1315
create = async (params: NewEvaluationRecordsItem) => {
14-
const [result] = await serverDB
16+
const [result] = await this.db
1517
.insert(evaluationRecords)
1618
.values({ ...params, userId: this.userId })
1719
.returning();
1820
return result;
1921
};
2022

2123
batchCreate = async (params: NewEvaluationRecordsItem[]) => {
22-
return serverDB
24+
return this.db
2325
.insert(evaluationRecords)
2426
.values(params.map((item) => ({ ...item, userId: this.userId })))
2527
.returning();
2628
};
2729

2830
delete = async (id: number) => {
29-
return serverDB
31+
return this.db
3032
.delete(evaluationRecords)
3133
.where(and(eq(evaluationRecords.id, id), eq(evaluationRecords.userId, this.userId)));
3234
};
3335

3436
query = async (reportId: number) => {
35-
return serverDB.query.evaluationRecords.findMany({
37+
return this.db.query.evaluationRecords.findMany({
3638
where: and(
3739
eq(evaluationRecords.evaluationId, reportId),
3840
eq(evaluationRecords.userId, this.userId),
@@ -41,13 +43,13 @@ export class EvaluationRecordModel {
4143
};
4244

4345
findById = async (id: number) => {
44-
return serverDB.query.evaluationRecords.findFirst({
46+
return this.db.query.evaluationRecords.findFirst({
4547
where: and(eq(evaluationRecords.id, id), eq(evaluationRecords.userId, this.userId)),
4648
});
4749
};
4850

4951
findByEvaluationId = async (evaluationId: number) => {
50-
return serverDB.query.evaluationRecords.findMany({
52+
return this.db.query.evaluationRecords.findMany({
5153
where: and(
5254
eq(evaluationRecords.evaluationId, evaluationId),
5355
eq(evaluationRecords.userId, this.userId),
@@ -56,7 +58,7 @@ export class EvaluationRecordModel {
5658
};
5759

5860
update = async (id: number, value: Partial<NewEvaluationRecordsItem>) => {
59-
return serverDB
61+
return this.db
6062
.update(evaluationRecords)
6163
.set(value)
6264
.where(and(eq(evaluationRecords.id, id), eq(evaluationRecords.userId, this.userId)));

src/server/routers/async/file.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ const fileProcedure = asyncAuthedProcedure.use(async (opts) => {
3232
ctx: {
3333
asyncTaskModel: new AsyncTaskModel(ctx.serverDB, ctx.userId),
3434
chunkModel: new ChunkModel(ctx.serverDB, ctx.userId),
35-
chunkService: new ChunkService(ctx.userId),
35+
chunkService: new ChunkService(ctx.serverDB, ctx.userId),
3636
embeddingModel: new EmbeddingModel(ctx.serverDB, ctx.userId),
3737
fileModel: new FileModel(ctx.serverDB, ctx.userId),
3838
fileService: new FileService(ctx.serverDB, ctx.userId),

src/server/routers/async/ragEval.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ const ragEvalProcedure = asyncAuthedProcedure.use(async (opts) => {
2525
return opts.next({
2626
ctx: {
2727
chunkModel: new ChunkModel(ctx.serverDB, ctx.userId),
28-
chunkService: new ChunkService(ctx.userId),
29-
datasetRecordModel: new EvalDatasetRecordModel(ctx.userId),
28+
chunkService: new ChunkService(ctx.serverDB, ctx.userId),
29+
datasetRecordModel: new EvalDatasetRecordModel(ctx.serverDB, ctx.userId),
3030
embeddingModel: new EmbeddingModel(ctx.serverDB, ctx.userId),
31-
evalRecordModel: new EvaluationRecordModel(ctx.userId),
32-
evaluationModel: new EvalEvaluationModel(ctx.userId),
31+
evalRecordModel: new EvaluationRecordModel(ctx.serverDB, ctx.userId),
32+
evaluationModel: new EvalEvaluationModel(ctx.serverDB, ctx.userId),
3333
fileModel: new FileModel(ctx.serverDB, ctx.userId),
3434
},
3535
});

0 commit comments

Comments
 (0)