asdasd
This commit is contained in:
@@ -1606,6 +1606,36 @@
|
||||
}
|
||||
}
|
||||
|
||||
async function migrateLegacyFxData() {
|
||||
if (!window.confirm('Legacy-FX-Rates aus dem Mining-Checker nach fx-rates migrieren und Messpunkte auf die neuen fetch_id-Verweise aktualisieren?')) {
|
||||
return;
|
||||
}
|
||||
|
||||
setSaving(true);
|
||||
setError('');
|
||||
setMessage('');
|
||||
try {
|
||||
const result = await request(`${apiBase}/projects/${encodeURIComponent(projectKey)}/legacy-fx-migrate`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
timeoutMs: 30000,
|
||||
});
|
||||
setMessage(
|
||||
`${result.message || 'Legacy-FX-Rates wurden migriert.'} ` +
|
||||
`Fetches gefunden: ${Number(result.legacy_fetches_found || 0)}, ` +
|
||||
`neu importiert: ${Number(result.fx_fetches_imported || 0)}, ` +
|
||||
`wiederverwendet: ${Number(result.fx_fetches_reused || 0)}, ` +
|
||||
`Messpunkte aktualisiert: ${Number(result.measurements_updated || 0)}, ` +
|
||||
`offen: ${Number(result.measurements_unresolved || 0)}.`
|
||||
);
|
||||
await loadBootstrap(projectKey);
|
||||
} catch (err) {
|
||||
setError(err.message);
|
||||
} finally {
|
||||
setSaving(false);
|
||||
}
|
||||
}
|
||||
|
||||
async function importSqlFile() {
|
||||
if (!sqlImportFile) {
|
||||
setError('Bitte zuerst eine SQL-Datei auswaehlen.');
|
||||
@@ -2881,6 +2911,13 @@
|
||||
onClick: importOldData,
|
||||
disabled: saving,
|
||||
}, saving ? 'Importiert …' : 'Alte Daten importieren'),
|
||||
h('button', {
|
||||
key: 'legacy-fx-migrate',
|
||||
type: 'button',
|
||||
className: 'mc-button mc-button--secondary',
|
||||
onClick: migrateLegacyFxData,
|
||||
disabled: saving,
|
||||
}, saving ? 'Migriert …' : 'Legacy FX zu fx-rates migrieren'),
|
||||
h('div', { key: 'sql-import', className: 'mc-form' }, [
|
||||
h('label', { className: 'mc-field' }, [
|
||||
h('span', { className: 'mc-field-label' }, 'SQL-Datei importieren'),
|
||||
|
||||
Reference in New Issue
Block a user