fix: clear synced provider models on delete all

Ensure provider-level delete all removes synced available model lists so imported models do not reappear after clearing managed models.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
墨林ObsidianGrove
2026-05-15 01:39:31 +08:00
parent 2f794d92a4
commit 83f242fa4d
3 changed files with 21 additions and 0 deletions

View File

@@ -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: [] },
});
}

View File

@@ -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<number> {
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,

View File

@@ -65,6 +65,7 @@ export {
getAllSyncedAvailableModels,
replaceSyncedAvailableModelsForConnection,
deleteSyncedAvailableModelsForConnection,
deleteSyncedAvailableModelsForProvider,
} from "./db/models";
export type { ModelCompatPerProtocol, ModelCompatPatch, SyncedAvailableModel } from "./db/models";