36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import type { ProviderConfig } from '../../shared/providers/types';
|
|
import {
|
|
getDefaultProviderAccountId,
|
|
providerConfigToAccount,
|
|
saveProviderAccount,
|
|
} from './provider-store';
|
|
import { getClawXProviderStore } from './store-instance';
|
|
|
|
const PROVIDER_STORE_SCHEMA_VERSION = 1;
|
|
|
|
export async function ensureProviderStoreMigrated(): Promise<void> {
|
|
const store = await getClawXProviderStore();
|
|
const schemaVersion = Number(store.get('schemaVersion') ?? 0);
|
|
|
|
if (schemaVersion >= PROVIDER_STORE_SCHEMA_VERSION) {
|
|
return;
|
|
}
|
|
|
|
const legacyProviders = (store.get('providers') ?? {}) as Record<string, ProviderConfig>;
|
|
const defaultProviderId = (store.get('defaultProvider') ?? null) as string | null;
|
|
const existingDefaultAccountId = await getDefaultProviderAccountId();
|
|
|
|
for (const provider of Object.values(legacyProviders)) {
|
|
const account = providerConfigToAccount(provider, {
|
|
isDefault: provider.id === defaultProviderId,
|
|
});
|
|
await saveProviderAccount(account);
|
|
}
|
|
|
|
if (!existingDefaultAccountId && defaultProviderId) {
|
|
store.set('defaultProviderAccountId', defaultProviderId);
|
|
}
|
|
|
|
store.set('schemaVersion', PROVIDER_STORE_SCHEMA_VERSION);
|
|
}
|