Skip to content

Commit 6ceb818

Browse files
committed
🗃️ refactor: add db migration
1 parent d737afe commit 6ceb818

File tree

3 files changed

+15
-25
lines changed

3 files changed

+15
-25
lines changed

src/database/core/db.ts

+12
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { DB_Session } from '@/database/schemas/session';
77
import { DB_SessionGroup } from '@/database/schemas/sessionGroup';
88
import { DB_Topic } from '@/database/schemas/topic';
99
import { DB_User } from '@/database/schemas/user';
10+
import { MigrationLLMSettings } from '@/migrations/FromV3ToV4';
1011
import { uuid } from '@/utils/uuid';
1112

1213
import { migrateSettingsToUser } from './migrations/migrateSettingsToUser';
@@ -62,6 +63,10 @@ export class LocalDB extends Dexie {
6263
.stores(dbSchemaV7)
6364
.upgrade((trans) => this.upgradeToV7(trans));
6465

66+
this.version(8)
67+
.stores(dbSchemaV7)
68+
.upgrade((trans) => this.upgradeToV8(trans));
69+
6570
this.files = this.table('files');
6671
this.sessions = this.table('sessions');
6772
this.messages = this.table('messages');
@@ -139,6 +144,13 @@ export class LocalDB extends Dexie {
139144
plugin.id = plugin.identifier;
140145
});
141146
};
147+
148+
upgradeToV8 = async (trans: Transaction) => {
149+
const users = trans.table('users');
150+
users.toCollection().modify((user: DB_User) => {
151+
user.settings = MigrationLLMSettings.migrateSettings(user.settings as any);
152+
});
153+
};
142154
}
143155

144156
export const LocalDBInstance = new LocalDB();

src/database/schemas/user.ts

+1-25
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,14 @@ import { z } from 'zod';
33
import { AgentSchema } from '@/database/schemas/session';
44
import { LobeMetaDataSchema } from '@/types/meta';
55

6-
const modelProviderSchema = z.object({
7-
openai: z.object({
8-
OPENAI_API_KEY: z.string().optional(),
9-
azureApiVersion: z.string().optional(),
10-
customModelName: z.string().optional(),
11-
endpoint: z.string().optional(),
12-
models: z.array(z.string()).optional(),
13-
useAzure: z.boolean().optional(),
14-
}),
15-
// zhipu: z.object({
16-
// ZHIPU_API_KEY: z.string().optional(),
17-
// enabled: z.boolean().default(false),
18-
// }),
19-
});
20-
216
const settingsSchema = z.object({
227
defaultAgent: z.object({
238
config: AgentSchema,
249
meta: LobeMetaDataSchema,
2510
}),
2611
fontSize: z.number().default(14),
2712
language: z.string(),
28-
languageModel: modelProviderSchema.partial(),
13+
languageModel: z.any().optional(),
2914
password: z.string(),
3015
themeMode: z.string(),
3116
tts: z.object({
@@ -38,19 +23,10 @@ const settingsSchema = z.object({
3823
}),
3924
});
4025

41-
// const patchSchema = z.array(
42-
// z.object({
43-
// op: z.string(),
44-
// path: z.string(),
45-
// value: z.any(),
46-
// }),
47-
// );
48-
4926
export const DB_UserSchema = z.object({
5027
avatar: z.string().optional(),
5128
settings: settingsSchema.partial(),
5229
uuid: z.string(),
53-
// settings: patchSchema,
5430
});
5531

5632
export type DB_User = z.infer<typeof DB_UserSchema>;

src/migrations/FromV3ToV4/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -84,3 +84,5 @@ export class MigrationV3ToV4 implements Migration {
8484
};
8585
};
8686
}
87+
88+
export const MigrationLLMSettings = MigrationV3ToV4;

0 commit comments

Comments
 (0)