diff --git a/src/app/api/provider-models/route.ts b/src/app/api/provider-models/route.ts index 40c81a687b..4956aaf962 100644 --- a/src/app/api/provider-models/route.ts +++ b/src/app/api/provider-models/route.ts @@ -4,6 +4,7 @@ import { addCustomModel, removeCustomModel, replaceCustomModels, + deleteSyncedAvailableModelsForProvider, updateCustomModel, getModelCompatOverrides, mergeModelCompatOverride, @@ -369,9 +370,12 @@ export async function DELETE(request) { const all = searchParams.get("all"); if (all === "true") { await replaceCustomModels(provider, [], { allowEmpty: true }); + const syncedAvailableModelListsRemoved = + await deleteSyncedAvailableModelsForProvider(provider); const removedAliases = await deleteManagedAvailableModelAliasesForProvider(provider); return Response.json({ cleared: true, + syncedAvailableModelListsRemoved, aliasChanges: { removed: removedAliases, assigned: [] }, }); } diff --git a/src/lib/db/models.ts b/src/lib/db/models.ts index f749a4ffc8..2520ada8fa 100644 --- a/src/lib/db/models.ts +++ b/src/lib/db/models.ts @@ -707,6 +707,22 @@ export async function deleteSyncedAvailableModelsForConnection( return getSyncedAvailableModels(providerId); } +/** + * Delete all synced models for every connection belonging to a provider. + * Returns the number of connection-scoped synced model lists removed. + */ +export async function deleteSyncedAvailableModelsForProvider(providerId: string): Promise { + const db = getDbInstance(); + const keyPrefix = `${providerId}:`; + const result = db + .prepare( + "DELETE FROM key_value WHERE namespace = 'syncedAvailableModels' AND substr(key, 1, ?) = ?" + ) + .run(keyPrefix.length, keyPrefix); + backupDbFile("pre-write"); + return Number(result.changes || 0); +} + export async function updateCustomModel( providerId: string, modelId: string, diff --git a/src/lib/localDb.ts b/src/lib/localDb.ts index f3af94bc83..65a5681e08 100755 --- a/src/lib/localDb.ts +++ b/src/lib/localDb.ts @@ -65,6 +65,7 @@ export { getAllSyncedAvailableModels, replaceSyncedAvailableModelsForConnection, deleteSyncedAvailableModelsForConnection, + deleteSyncedAvailableModelsForProvider, } from "./db/models"; export type { ModelCompatPerProtocol, ModelCompatPatch, SyncedAvailableModel } from "./db/models";