@lobehub/lobehub 2.0.0-next.196 → 2.0.0-next.197

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/changelog/v1.json +12 -0
  3. package/package.json +2 -3
  4. package/packages/database/src/core/getTestDB.ts +50 -0
  5. package/packages/database/src/models/__tests__/_test_template.ts +1 -1
  6. package/packages/database/src/models/__tests__/agent.test.ts +1 -1
  7. package/packages/database/src/models/__tests__/aiModel.test.ts +1 -1
  8. package/packages/database/src/models/__tests__/aiProvider.test.ts +1 -1
  9. package/packages/database/src/models/__tests__/apiKey.test.ts +1 -1
  10. package/packages/database/src/models/__tests__/asyncTask.test.ts +1 -1
  11. package/packages/database/src/models/__tests__/chatGroup.test.ts +1 -1
  12. package/packages/database/src/models/__tests__/chunk.test.ts +1 -1
  13. package/packages/database/src/models/__tests__/document.test.ts +1 -1
  14. package/packages/database/src/models/__tests__/drizzleMigration.test.ts +1 -1
  15. package/packages/database/src/models/__tests__/embedding.test.ts +1 -1
  16. package/packages/database/src/models/__tests__/file.test.ts +1 -1
  17. package/packages/database/src/models/__tests__/generation.test.ts +1 -1
  18. package/packages/database/src/models/__tests__/generationBatch.test.ts +1 -1
  19. package/packages/database/src/models/__tests__/generationTopic.test.ts +1 -1
  20. package/packages/database/src/models/__tests__/knowledgeBase.test.ts +1 -1
  21. package/packages/database/src/models/__tests__/messages/message.create.test.ts +1 -1
  22. package/packages/database/src/models/__tests__/messages/message.delete.test.ts +1 -1
  23. package/packages/database/src/models/__tests__/messages/message.query.test.ts +1 -1
  24. package/packages/database/src/models/__tests__/messages/message.stats.test.ts +1 -1
  25. package/packages/database/src/models/__tests__/messages/message.thread-query.test.ts +1 -1
  26. package/packages/database/src/models/__tests__/messages/message.update.test.ts +1 -1
  27. package/packages/database/src/models/__tests__/messages/messageWithTask.test.ts +1 -1
  28. package/packages/database/src/models/__tests__/messages/queryWithMessageGroup.perf.test.ts +1 -1
  29. package/packages/database/src/models/__tests__/messages/queryWithMessageGroup.test.ts +1 -1
  30. package/packages/database/src/models/__tests__/oauthHandoff.test.ts +1 -1
  31. package/packages/database/src/models/__tests__/plugin.test.ts +1 -1
  32. package/packages/database/src/models/__tests__/session.test.ts +1 -1
  33. package/packages/database/src/models/__tests__/sessionGroup.test.ts +1 -1
  34. package/packages/database/src/models/__tests__/thread.test.ts +1 -1
  35. package/packages/database/src/models/__tests__/topicDocument.test.ts +1 -1
  36. package/packages/database/src/models/__tests__/topics/topic.create.test.ts +1 -1
  37. package/packages/database/src/models/__tests__/topics/topic.delete.test.ts +1 -1
  38. package/packages/database/src/models/__tests__/topics/topic.query.test.ts +1 -1
  39. package/packages/database/src/models/__tests__/topics/topic.stats.test.ts +1 -1
  40. package/packages/database/src/models/__tests__/topics/topic.update.test.ts +1 -1
  41. package/packages/database/src/models/__tests__/user.test.ts +1 -1
  42. package/packages/database/src/models/__tests__/userMemories.test.ts +1 -1
  43. package/packages/database/src/models/__tests__/userMemoryIdentity.test.ts +1 -1
  44. package/packages/database/src/models/userMemory/__tests__/context.test.ts +1 -1
  45. package/packages/database/src/models/userMemory/__tests__/experience.test.ts +1 -1
  46. package/packages/database/src/models/userMemory/__tests__/identity.test.ts +1 -1
  47. package/packages/database/src/models/userMemory/__tests__/preference.test.ts +1 -1
  48. package/packages/database/src/repositories/agentGroup/index.test.ts +1 -1
  49. package/packages/database/src/repositories/agentMigration/__tests__/agentMigrationRepo.test.ts +1 -1
  50. package/packages/database/src/repositories/aiInfra/index.test.ts +1 -1
  51. package/packages/database/src/repositories/compression/index.test.ts +1 -1
  52. package/packages/database/src/repositories/dataExporter/index.test.ts +1 -1
  53. package/packages/database/src/repositories/dataImporter/__tests__/index.test.ts +1 -1
  54. package/packages/database/src/repositories/dataImporter/deprecated/__tests__/index.test.ts +2 -2
  55. package/packages/database/src/repositories/home/__tests__/index.test.ts +1 -1
  56. package/packages/database/src/repositories/home/index.test.ts +1 -1
  57. package/packages/database/src/repositories/knowledge/index.test.ts +1 -1
  58. package/packages/database/src/repositories/search/index.test.ts +1 -1
  59. package/packages/database/src/repositories/topicImporter/__tests__/importTopic.test.ts +1 -1
  60. package/packages/database/src/repositories/userMemory/__tests__/UserMemoryTopicRepository.test.ts +1 -1
  61. package/packages/database/src/server/models/__tests__/adapter.test.ts +2 -2
  62. package/packages/database/src/server/models/__tests__/user.test.ts +2 -2
  63. package/packages/database/tests/test-utils.ts +1 -1
  64. package/packages/types/src/export.ts +1 -1
  65. package/packages/types/src/index.ts +0 -1
  66. package/src/features/ChatInput/ActionBar/Token/TokenTag.tsx +1 -0
  67. package/src/features/LibraryModal/AssignKnowledgeBase/List.tsx +12 -13
  68. package/src/features/ResourceManager/components/Explorer/MasonryView/index.tsx +1 -0
  69. package/src/server/routers/lambda/__tests__/file.test.ts +76 -3
  70. package/src/server/routers/lambda/file.ts +13 -1
  71. package/src/services/config.ts +2 -16
  72. package/packages/database/src/core/dbForTest.ts +0 -43
  73. package/packages/database/src/core/migrations.json +0 -1080
  74. package/packages/database/src/models/__tests__/_util.ts +0 -30
  75. package/packages/database/src/repositories/tableViewer/index.test.ts +0 -255
  76. package/packages/database/src/repositories/tableViewer/index.ts +0 -251
  77. package/packages/types/src/tableViewer.ts +0 -30
  78. package/scripts/migrateClientDB/compile-migrations.ts +0 -14
package/CHANGELOG.md CHANGED
@@ -2,6 +2,39 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ## [Version 2.0.0-next.197](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.196...v2.0.0-next.197)
6
+
7
+ <sup>Released on **2026-01-03**</sup>
8
+
9
+ #### ♻ Code Refactoring
10
+
11
+ - **misc**: Remove client db and refactor test.
12
+
13
+ #### 🐛 Bug Fixes
14
+
15
+ - **misc**: Fix file upload issue.
16
+
17
+ <br/>
18
+
19
+ <details>
20
+ <summary><kbd>Improvements and Fixes</kbd></summary>
21
+
22
+ #### Code refactoring
23
+
24
+ - **misc**: Remove client db and refactor test, closes [#11123](https://github.com/lobehub/lobe-chat/issues/11123) ([bb2799d](https://github.com/lobehub/lobe-chat/commit/bb2799d))
25
+
26
+ #### What's fixed
27
+
28
+ - **misc**: Fix file upload issue, closes [#11122](https://github.com/lobehub/lobe-chat/issues/11122) ([1ae327a](https://github.com/lobehub/lobe-chat/commit/1ae327a))
29
+
30
+ </details>
31
+
32
+ <div align="right">
33
+
34
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
35
+
36
+ </div>
37
+
5
38
  ## [Version 2.0.0-next.196](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.195...v2.0.0-next.196)
6
39
 
7
40
  <sup>Released on **2026-01-03**</sup>
package/changelog/v1.json CHANGED
@@ -1,4 +1,16 @@
1
1
  [
2
+ {
3
+ "children": {
4
+ "improvements": [
5
+ "Remove client db and refactor test."
6
+ ],
7
+ "fixes": [
8
+ "Fix file upload issue."
9
+ ]
10
+ },
11
+ "date": "2026-01-03",
12
+ "version": "2.0.0-next.197"
13
+ },
2
14
  {
3
15
  "children": {
4
16
  "improvements": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/lobehub",
3
- "version": "2.0.0-next.196",
3
+ "version": "2.0.0-next.197",
4
4
  "description": "LobeHub - an open-source,comprehensive AI Agent framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.",
5
5
  "keywords": [
6
6
  "framework",
@@ -42,8 +42,7 @@
42
42
  "build:electron": "cross-env NODE_OPTIONS=--max-old-space-size=8192 NEXT_PUBLIC_IS_DESKTOP_APP=1 tsx scripts/electronWorkflow/buildNextApp.mts",
43
43
  "build:vercel": "npm run prebuild && cross-env NODE_OPTIONS=--max-old-space-size=6144 next build --webpack",
44
44
  "clean:node_modules": "bash -lc 'set -e; echo \"Removing all node_modules...\"; rm -rf node_modules; pnpm -r exec rm -rf node_modules; rm -rf apps/desktop/node_modules; echo \"All node_modules removed.\"'",
45
- "db:generate": "drizzle-kit generate && npm run db:generate-client && npm run workflow:dbml",
46
- "db:generate-client": "tsx ./scripts/migrateClientDB/compile-migrations.ts",
45
+ "db:generate": "drizzle-kit generate && npm run workflow:dbml",
47
46
  "db:migrate": "MIGRATION_DB=1 tsx ./scripts/migrateServerDB/index.ts",
48
47
  "db:studio": "drizzle-kit studio",
49
48
  "db:visualize": "dbdocs build docs/development/database-schema.dbml --project lobe-chat",
@@ -0,0 +1,50 @@
1
+ import { PGlite } from '@electric-sql/pglite';
2
+ import { vector } from '@electric-sql/pglite/vector';
3
+ import { drizzle as pgliteDrizzle } from 'drizzle-orm/pglite';
4
+ import { migrate as pgliteMigrate } from 'drizzle-orm/pglite/migrator';
5
+ import { drizzle as nodeDrizzle } from 'drizzle-orm/node-postgres';
6
+ import { migrate as nodeMigrate } from 'drizzle-orm/node-postgres/migrator';
7
+ import { join } from 'node:path';
8
+ import { Pool as NodePool } from 'pg';
9
+
10
+ import { serverDBEnv } from '@/config/db';
11
+
12
+ import * as schema from '../schemas';
13
+ import { LobeChatDatabase } from '../type';
14
+
15
+ const migrationsFolder = join(__dirname, '../../migrations');
16
+
17
+ const isServerDBMode = process.env.TEST_SERVER_DB === '1';
18
+
19
+ let testClientDB: ReturnType<typeof pgliteDrizzle<typeof schema>> | null = null;
20
+ let testServerDB: ReturnType<typeof nodeDrizzle<typeof schema>> | null = null;
21
+
22
+ export const getTestDB = async (): Promise<LobeChatDatabase> => {
23
+ // Server DB mode (node-postgres)
24
+ if (isServerDBMode) {
25
+ if (testServerDB) return testServerDB as unknown as LobeChatDatabase;
26
+
27
+ const connectionString = serverDBEnv.DATABASE_TEST_URL;
28
+
29
+ if (!connectionString) {
30
+ throw new Error('DATABASE_TEST_URL is not set');
31
+ }
32
+
33
+ const client = new NodePool({ connectionString });
34
+ testServerDB = nodeDrizzle(client, { schema });
35
+
36
+ await nodeMigrate(testServerDB, { migrationsFolder });
37
+
38
+ return testServerDB as unknown as LobeChatDatabase;
39
+ }
40
+
41
+ // Client DB mode (PGlite)
42
+ if (testClientDB) return testClientDB as unknown as LobeChatDatabase;
43
+
44
+ const pglite = new PGlite({ extensions: { vector } });
45
+ testClientDB = pgliteDrizzle({ client: pglite, schema });
46
+
47
+ await pgliteMigrate(testClientDB, { migrationsFolder });
48
+
49
+ return testClientDB as unknown as LobeChatDatabase;
50
+ };
@@ -2,10 +2,10 @@
2
2
  import { eq } from 'drizzle-orm';
3
3
  import { afterEach, beforeEach, describe, expect, it } from 'vitest';
4
4
 
5
+ import { getTestDB } from '../../core/getTestDB';
5
6
  import { sessionGroups, users } from '../../schemas';
6
7
  import { LobeChatDatabase } from '../../type';
7
8
  import { SessionGroupModel } from '../sessionGroup';
8
- import { getTestDB } from './_util';
9
9
 
10
10
  const serverDB: LobeChatDatabase = await getTestDB();
11
11
 
@@ -16,7 +16,7 @@ import {
16
16
  } from '../../schemas';
17
17
  import { LobeChatDatabase } from '../../type';
18
18
  import { AgentModel } from '../agent';
19
- import { getTestDB } from './_util';
19
+ import { getTestDB } from '../../core/getTestDB';
20
20
 
21
21
  const serverDB: LobeChatDatabase = await getTestDB();
22
22
 
@@ -6,7 +6,7 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
6
6
  import { AiModelSelectItem, NewAiModelItem, aiModels, users } from '../../schemas';
7
7
  import { LobeChatDatabase } from '../../type';
8
8
  import { AiModelModel } from '../aiModel';
9
- import { getTestDB } from './_util';
9
+ import { getTestDB } from '../../core/getTestDB';
10
10
 
11
11
  const serverDB: LobeChatDatabase = await getTestDB();
12
12
 
@@ -8,7 +8,7 @@ import { sleep } from '@/utils/sleep';
8
8
  import { aiProviders, users } from '../../schemas';
9
9
  import { LobeChatDatabase } from '../../type';
10
10
  import { AiProviderModel } from '../aiProvider';
11
- import { getTestDB } from './_util';
11
+ import { getTestDB } from '../../core/getTestDB';
12
12
 
13
13
  const serverDB: LobeChatDatabase = await getTestDB();
14
14
 
@@ -5,7 +5,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
5
5
  import { apiKeys, users } from '../../schemas';
6
6
  import { LobeChatDatabase } from '../../type';
7
7
  import { ApiKeyModel } from '../apiKey';
8
- import { getTestDB } from './_util';
8
+ import { getTestDB } from '../../core/getTestDB';
9
9
 
10
10
  const serverDB: LobeChatDatabase = await getTestDB();
11
11
 
@@ -7,7 +7,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
7
7
  import { asyncTasks, users } from '../../schemas';
8
8
  import { LobeChatDatabase } from '../../type';
9
9
  import { AsyncTaskModel } from '../asyncTask';
10
- import { getTestDB } from './_util';
10
+ import { getTestDB } from '../../core/getTestDB';
11
11
 
12
12
  const serverDB: LobeChatDatabase = await getTestDB();
13
13
 
@@ -12,7 +12,7 @@ import {
12
12
  users,
13
13
  } from '../../schemas';
14
14
  import { ChatGroupModel } from '../chatGroup';
15
- import { getTestDB } from './_util';
15
+ import { getTestDB } from '../../core/getTestDB';
16
16
 
17
17
  const userId = 'test-user';
18
18
  const otherUserId = 'other-user';
@@ -6,7 +6,7 @@ import { LobeChatDatabase } from '../../type';import { uuid } from '@/utils/uuid
6
6
 
7
7
  import { chunks, embeddings, fileChunks, files, unstructuredChunks, users } from '../../schemas';
8
8
  import { ChunkModel } from '../chunk';
9
- import { getTestDB } from './_util';
9
+ import { getTestDB } from '../../core/getTestDB';
10
10
  import { codeEmbedding, designThinkingQuery, designThinkingQuery2 } from './fixtures/embedding';
11
11
 
12
12
  const serverDB: LobeChatDatabase = await getTestDB();
@@ -5,7 +5,7 @@ import { documents, files, users } from '../../schemas';
5
5
  import { LobeChatDatabase } from '../../type';
6
6
  import { DocumentModel } from '../document';
7
7
  import { FileModel } from '../file';
8
- import { getTestDB } from './_util';
8
+ import { getTestDB } from '../../core/getTestDB';
9
9
 
10
10
  const serverDB: LobeChatDatabase = await getTestDB();
11
11
 
@@ -3,7 +3,7 @@ import { beforeEach, describe, expect, it } from 'vitest';
3
3
 
4
4
  import { LobeChatDatabase } from '../../type';
5
5
  import { DrizzleMigrationModel } from '../drizzleMigration';
6
- import { getTestDB } from './_util';
6
+ import { getTestDB } from '../../core/getTestDB';
7
7
 
8
8
  const serverDB: LobeChatDatabase = await getTestDB();
9
9
 
@@ -4,7 +4,7 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
4
4
  import { chunks, embeddings, users } from '../../schemas';
5
5
  import { LobeChatDatabase } from '../../type';
6
6
  import { EmbeddingModel } from '../embedding';
7
- import { getTestDB } from './_util';
7
+ import { getTestDB } from '../../core/getTestDB';
8
8
  import { designThinkingQuery } from './fixtures/embedding';
9
9
 
10
10
  const userId = 'embedding-user-test';
@@ -15,7 +15,7 @@ import {
15
15
  } from '../../schemas';
16
16
  import { LobeChatDatabase } from '../../type';
17
17
  import { FileModel } from '../file';
18
- import { getTestDB } from './_util';
18
+ import { getTestDB } from '../../core/getTestDB';
19
19
 
20
20
  const serverDB: LobeChatDatabase = await getTestDB();
21
21
 
@@ -15,7 +15,7 @@ import {
15
15
  } from '../../schemas';
16
16
  import { LobeChatDatabase } from '../../type';
17
17
  import { GenerationModel } from '../generation';
18
- import { getTestDB } from './_util';
18
+ import { getTestDB } from '../../core/getTestDB';
19
19
 
20
20
  const serverDB: LobeChatDatabase = await getTestDB();
21
21
 
@@ -13,7 +13,7 @@ import {
13
13
  } from '../../schemas';
14
14
  import { LobeChatDatabase } from '../../type';
15
15
  import { GenerationBatchModel } from '../generationBatch';
16
- import { getTestDB } from './_util';
16
+ import { getTestDB } from '../../core/getTestDB';
17
17
 
18
18
  const serverDB: LobeChatDatabase = await getTestDB();
19
19
 
@@ -6,7 +6,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
6
6
  import { generationBatches, generationTopics, generations, users } from '../../schemas';
7
7
  import { LobeChatDatabase } from '../../type';
8
8
  import { GenerationTopicModel } from '../generationTopic';
9
- import { getTestDB } from './_util';
9
+ import { getTestDB } from '../../core/getTestDB';
10
10
 
11
11
  // Mock FileService
12
12
  const mockGetFullFileUrl = vi.fn();
@@ -14,7 +14,7 @@ import {
14
14
  } from '../../schemas';
15
15
  import { LobeChatDatabase } from '../../type';
16
16
  import { KnowledgeBaseModel } from '../knowledgeBase';
17
- import { getTestDB } from './_util';
17
+ import { getTestDB } from '../../core/getTestDB';
18
18
 
19
19
  const serverDB: LobeChatDatabase = await getTestDB();
20
20
 
@@ -19,7 +19,7 @@ import {
19
19
  } from '../../../schemas';
20
20
  import { LobeChatDatabase } from '../../../type';
21
21
  import { MessageModel } from '../../message';
22
- import { getTestDB } from '../_util';
22
+ import { getTestDB } from '../../../core/getTestDB';
23
23
  import { codeEmbedding } from '../fixtures/embedding';
24
24
 
25
25
  const serverDB: LobeChatDatabase = await getTestDB();
@@ -18,7 +18,7 @@ import {
18
18
  } from '../../../schemas';
19
19
  import { LobeChatDatabase } from '../../../type';
20
20
  import { MessageModel } from '../../message';
21
- import { getTestDB } from '../_util';
21
+ import { getTestDB } from '../../../core/getTestDB';
22
22
  import { codeEmbedding } from '../fixtures/embedding';
23
23
 
24
24
  const serverDB: LobeChatDatabase = await getTestDB();
@@ -28,7 +28,7 @@ import {
28
28
  } from '../../../schemas';
29
29
  import { LobeChatDatabase } from '../../../type';
30
30
  import { MessageModel } from '../../message';
31
- import { getTestDB } from '../_util';
31
+ import { getTestDB } from '../../../core/getTestDB';
32
32
  import { codeEmbedding } from '../fixtures/embedding';
33
33
 
34
34
  const serverDB: LobeChatDatabase = await getTestDB();
@@ -7,7 +7,7 @@ import { uuid } from '@/utils/uuid';
7
7
  import { embeddings, files, messageQueries, messages, sessions, users } from '../../../schemas';
8
8
  import { LobeChatDatabase } from '../../../type';
9
9
  import { MessageModel } from '../../message';
10
- import { getTestDB } from '../_util';
10
+ import { getTestDB } from '../../../core/getTestDB';
11
11
  import { codeEmbedding } from '../fixtures/embedding';
12
12
 
13
13
  const serverDB: LobeChatDatabase = await getTestDB();
@@ -4,7 +4,7 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
4
4
  import { agents, messages, sessions, threads, topics, users } from '../../../schemas';
5
5
  import { LobeChatDatabase } from '../../../type';
6
6
  import { MessageModel } from '../../message';
7
- import { getTestDB } from '../_util';
7
+ import { getTestDB } from '../../../core/getTestDB';
8
8
 
9
9
  const serverDB: LobeChatDatabase = await getTestDB();
10
10
 
@@ -23,7 +23,7 @@ import {
23
23
  } from '../../../schemas';
24
24
  import { LobeChatDatabase } from '../../../type';
25
25
  import { MessageModel } from '../../message';
26
- import { getTestDB } from '../_util';
26
+ import { getTestDB } from '../../../core/getTestDB';
27
27
  import { codeEmbedding } from '../fixtures/embedding';
28
28
 
29
29
  const serverDB: LobeChatDatabase = await getTestDB();
@@ -5,7 +5,7 @@ import { ThreadStatus, ThreadType } from '@/types/index';
5
5
  import { messages, sessions, threads, topics, users } from '../../../schemas';
6
6
  import { LobeChatDatabase } from '../../../type';
7
7
  import { MessageModel } from '../../message';
8
- import { getTestDB } from '../_util';
8
+ import { getTestDB } from '../../../core/getTestDB';
9
9
 
10
10
  const userId = 'message-task-user-test';
11
11
  const sessionId = 'message-task-session';
@@ -6,7 +6,7 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
6
6
  import { messageGroups, messages, topics, users } from '../../../schemas';
7
7
  import { LobeChatDatabase } from '../../../type';
8
8
  import { MessageModel } from '../../message';
9
- import { getTestDB } from '../_util';
9
+ import { getTestDB } from '../../../core/getTestDB';
10
10
 
11
11
  const userId = 'message-query-perf-test-user';
12
12
  const topicId = 'perf-test-topic-1';
@@ -6,7 +6,7 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
6
6
  import { messageGroups, messages, topics, users } from '../../../schemas';
7
7
  import { LobeChatDatabase } from '../../../type';
8
8
  import { MessageModel } from '../../message';
9
- import { getTestDB } from '../_util';
9
+ import { getTestDB } from '../../../core/getTestDB';
10
10
 
11
11
  const userId = 'message-query-test-user';
12
12
  const topicId = 'test-topic-1';
@@ -4,7 +4,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
4
4
  import { oauthHandoffs } from '../../schemas';
5
5
  import { LobeChatDatabase } from '../../type';
6
6
  import { OAuthHandoffModel } from '../oauthHandoff';
7
- import { getTestDB } from './_util';
7
+ import { getTestDB } from '../../core/getTestDB';
8
8
 
9
9
  const serverDB: LobeChatDatabase = await getTestDB();
10
10
  const oauthHandoffModel = new OAuthHandoffModel(serverDB);
@@ -4,7 +4,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
4
4
  import { LobeChatDatabase } from '../../type';
5
5
  import { NewInstalledPlugin, userInstalledPlugins, users } from '../../schemas';
6
6
  import { PluginModel } from '../plugin';
7
- import { getTestDB } from './_util';
7
+ import { getTestDB } from '../../core/getTestDB';
8
8
 
9
9
  const serverDB: LobeChatDatabase = await getTestDB();
10
10
 
@@ -17,7 +17,7 @@ import {
17
17
  import { LobeChatDatabase } from '../../type';
18
18
  import { idGenerator } from '../../utils/idGenerator';
19
19
  import { SessionModel } from '../session';
20
- import { getTestDB } from './_util';
20
+ import { getTestDB } from '../../core/getTestDB';
21
21
 
22
22
  const serverDB: LobeChatDatabase = await getTestDB();
23
23
 
@@ -5,7 +5,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
5
5
  import { sessionGroups, users } from '../../schemas';
6
6
  import { LobeChatDatabase } from '../../type';
7
7
  import { SessionGroupModel } from '../sessionGroup';
8
- import { getTestDB } from './_util';
8
+ import { getTestDB } from '../../core/getTestDB';
9
9
 
10
10
  const serverDB: LobeChatDatabase = await getTestDB();
11
11
 
@@ -5,7 +5,7 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
5
5
  import { sessions, threads, topics, users } from '../../schemas';
6
6
  import { LobeChatDatabase } from '../../type';
7
7
  import { ThreadModel } from '../thread';
8
- import { getTestDB } from './_util';
8
+ import { getTestDB } from '../../core/getTestDB';
9
9
 
10
10
  const userId = 'thread-user-test';
11
11
  const otherUserId = 'other-user-test';
@@ -5,7 +5,7 @@ import { documents, sessions, topicDocuments, topics, users } from '../../schema
5
5
  import { LobeChatDatabase } from '../../type';
6
6
  import { DocumentModel } from '../document';
7
7
  import { TopicDocumentModel } from '../topicDocument';
8
- import { getTestDB } from './_util';
8
+ import { getTestDB } from '../../core/getTestDB';
9
9
 
10
10
  const serverDB: LobeChatDatabase = await getTestDB();
11
11
 
@@ -4,7 +4,7 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
4
4
  import { agents, messages, sessions, topics, users } from '../../../schemas';
5
5
  import { LobeChatDatabase } from '../../../type';
6
6
  import { CreateTopicParams, TopicModel } from '../../topic';
7
- import { getTestDB } from '../_util';
7
+ import { getTestDB } from '../../../core/getTestDB';
8
8
 
9
9
  const userId = 'topic-create-user';
10
10
  const userId2 = 'topic-create-user-2';
@@ -12,7 +12,7 @@ import {
12
12
  } from '../../../schemas';
13
13
  import { LobeChatDatabase } from '../../../type';
14
14
  import { TopicModel } from '../../topic';
15
- import { getTestDB } from '../_util';
15
+ import { getTestDB } from '../../../core/getTestDB';
16
16
 
17
17
  const userId = 'topic-delete-user';
18
18
  const userId2 = 'topic-delete-user-2';
@@ -11,7 +11,7 @@ import {
11
11
  } from '../../../schemas';
12
12
  import { LobeChatDatabase } from '../../../type';
13
13
  import { TopicModel } from '../../topic';
14
- import { getTestDB } from '../_util';
14
+ import { getTestDB } from '../../../core/getTestDB';
15
15
 
16
16
  const userId = 'topic-query-user';
17
17
  const userId2 = 'topic-query-user-2';
@@ -3,7 +3,7 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
3
3
  import { agents, agentsToSessions, messages, sessions, topics, users } from '../../../schemas';
4
4
  import { LobeChatDatabase } from '../../../type';
5
5
  import { TopicModel } from '../../topic';
6
- import { getTestDB } from '../_util';
6
+ import { getTestDB } from '../../../core/getTestDB';
7
7
 
8
8
  const userId = 'topic-stats-user';
9
9
  const userId2 = 'topic-stats-user-2';
@@ -3,7 +3,7 @@ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
3
3
  import { sessions, topics, users } from '../../../schemas';
4
4
  import { LobeChatDatabase } from '../../../type';
5
5
  import { TopicModel } from '../../topic';
6
- import { getTestDB } from '../_util';
6
+ import { getTestDB } from '../../../core/getTestDB';
7
7
 
8
8
  const userId = 'topic-update-user';
9
9
  const sessionId = 'topic-update-session';
@@ -5,7 +5,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
5
5
  import { nextauthAccounts, userSettings, users } from '../../schemas';
6
6
  import { LobeChatDatabase } from '../../type';
7
7
  import { ListUsersForMemoryExtractorCursor, UserModel, UserNotFoundError } from '../user';
8
- import { getTestDB } from './_util';
8
+ import { getTestDB } from '../../core/getTestDB';
9
9
 
10
10
  const userId = 'user-model-test';
11
11
  const otherUserId = 'other-user-test';
@@ -24,7 +24,7 @@ import {
24
24
  CreateUserMemoryPreferenceParams,
25
25
  UserMemoryModel,
26
26
  } from '../userMemory';
27
- import { getTestDB } from './_util';
27
+ import { getTestDB } from '../../core/getTestDB';
28
28
 
29
29
  const serverDB: LobeChatDatabase = await getTestDB();
30
30
 
@@ -9,7 +9,7 @@ import { idGenerator } from '@/database/utils/idGenerator';
9
9
  import { userMemoriesIdentities, users } from '../../schemas';
10
10
  import { LobeChatDatabase } from '../../type';
11
11
  import { UserMemoryIdentityModel } from '../userMemory/identity';
12
- import { getTestDB } from './_util';
12
+ import { getTestDB } from '../../core/getTestDB';
13
13
 
14
14
  // Helper to generate unique identity IDs
15
15
  const genIdentityId = () => `mem_${nanoid(12)}`;
@@ -3,7 +3,7 @@ import { beforeEach, describe, expect, it } from 'vitest';
3
3
 
4
4
  import { NewUserMemoryContext, userMemories, userMemoriesContexts, users } from '../../../schemas';
5
5
  import { LobeChatDatabase } from '../../../type';
6
- import { getTestDB } from '../../__tests__/_util';
6
+ import { getTestDB } from '../../../core/getTestDB';
7
7
  import { UserMemoryContextModel } from '../context';
8
8
 
9
9
  const userId = 'context-test-user';
@@ -8,7 +8,7 @@ import {
8
8
  users,
9
9
  } from '../../../schemas';
10
10
  import { LobeChatDatabase } from '../../../type';
11
- import { getTestDB } from '../../__tests__/_util';
11
+ import { getTestDB } from '../../../core/getTestDB';
12
12
  import { UserMemoryExperienceModel } from '../experience';
13
13
 
14
14
  const userId = 'experience-test-user';
@@ -9,7 +9,7 @@ import {
9
9
  users,
10
10
  } from '../../../schemas';
11
11
  import { LobeChatDatabase } from '../../../type';
12
- import { getTestDB } from '../../__tests__/_util';
12
+ import { getTestDB } from '../../../core/getTestDB';
13
13
  import { UserMemoryIdentityModel } from '../identity';
14
14
 
15
15
  const userId = 'identity-test-user';
@@ -8,7 +8,7 @@ import {
8
8
  users,
9
9
  } from '../../../schemas';
10
10
  import { LobeChatDatabase } from '../../../type';
11
- import { getTestDB } from '../../__tests__/_util';
11
+ import { getTestDB } from '../../../core/getTestDB';
12
12
  import { UserMemoryPreferenceModel } from '../preference';
13
13
 
14
14
  const userId = 'preference-test-user';
@@ -2,7 +2,7 @@
2
2
  import { BUILTIN_AGENT_SLUGS } from '@lobechat/builtin-agents';
3
3
  import { beforeEach, describe, expect, it } from 'vitest';
4
4
 
5
- import { getTestDB } from '../../models/__tests__/_util';
5
+ import { getTestDB } from '../../core/getTestDB';
6
6
  import { agents } from '../../schemas/agent';
7
7
  import { chatGroups, chatGroupsAgents } from '../../schemas/chatGroup';
8
8
  import { users } from '../../schemas/user';
@@ -1,7 +1,7 @@
1
1
  import { eq, inArray } from 'drizzle-orm';
2
2
  import { afterEach, beforeEach, describe, expect, it } from 'vitest';
3
3
 
4
- import { getTestDB } from '../../../models/__tests__/_util';
4
+ import { getTestDB } from '../../../core/getTestDB';
5
5
  import { agents, messages, sessions, topics, users } from '../../../schemas';
6
6
  import { LobeChatDatabase } from '../../../type';
7
7
  import { AgentMigrationRepo } from '../index';
@@ -8,7 +8,7 @@ import { AiProviderModelListItem, EnabledAiModel } from 'model-bank';
8
8
  import { DEFAULT_MODEL_PROVIDER_LIST } from 'model-bank/modelProviders';
9
9
  import { beforeAll, beforeEach, describe, expect, it, vi } from 'vitest';
10
10
 
11
- import { getTestDB } from '../../models/__tests__/_util';
11
+ import { getTestDB } from '../../core/getTestDB';
12
12
  import { LobeChatDatabase } from '../../type';
13
13
  import { AiInfraRepos } from './index';
14
14
 
@@ -2,7 +2,7 @@
2
2
  import { MessageGroupType } from '@lobechat/types';
3
3
  import { beforeEach, describe, expect, it } from 'vitest';
4
4
 
5
- import { getTestDB } from '../../models/__tests__/_util';
5
+ import { getTestDB } from '../../core/getTestDB';
6
6
  import { messageGroups, messages } from '../../schemas/message';
7
7
  import { topics } from '../../schemas/topic';
8
8
  import { users } from '../../schemas/user';
@@ -1,6 +1,6 @@
1
1
  import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from 'vitest';
2
2
 
3
- import { getTestDB } from '../../models/__tests__/_util';
3
+ import { getTestDB } from '../../core/getTestDB';
4
4
  import {
5
5
  agents,
6
6
  agentsKnowledgeBases,