fix: expose migrations execute API route and preserve real migration errors in UI fallback
This commit is contained in:
parent
ba601e38b1
commit
c99790a710
@ -308,6 +308,15 @@ async def get_migration_statuses_api():
|
|||||||
return migration_statuses()
|
return migration_statuses()
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/settings/migrations/execute", tags=["Settings"])
|
||||||
|
async def execute_migration_api(payload: dict):
|
||||||
|
"""Expose migration execution via API router (served under /api/v1)."""
|
||||||
|
from app.settings.backend.views import execute_migration, MigrationExecution
|
||||||
|
|
||||||
|
model = MigrationExecution(**payload)
|
||||||
|
return execute_migration(model)
|
||||||
|
|
||||||
|
|
||||||
@router.post("/settings/sync-from-env", tags=["Settings"])
|
@router.post("/settings/sync-from-env", tags=["Settings"])
|
||||||
async def sync_settings_from_env():
|
async def sync_settings_from_env():
|
||||||
"""Sync settings from .env file into database (only updates empty values)"""
|
"""Sync settings from .env file into database (only updates empty values)"""
|
||||||
|
|||||||
@ -184,6 +184,7 @@
|
|||||||
const attempts = [];
|
const attempts = [];
|
||||||
let data = null;
|
let data = null;
|
||||||
let lastError = null;
|
let lastError = null;
|
||||||
|
let hardError = null;
|
||||||
|
|
||||||
for (const url of urls) {
|
for (const url of urls) {
|
||||||
try {
|
try {
|
||||||
@ -202,7 +203,12 @@
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
lastError = payload.detail || payload.message || `HTTP ${response.status}`;
|
const errMsg = payload.detail || payload.message || `HTTP ${response.status}`;
|
||||||
|
if (response.status !== 404 && response.status !== 405) {
|
||||||
|
hardError = errMsg;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
lastError = errMsg;
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
attempts.push(`${url} -> ERR`);
|
attempts.push(`${url} -> ERR`);
|
||||||
lastError = err.message || 'Netvaerksfejl';
|
lastError = err.message || 'Netvaerksfejl';
|
||||||
@ -210,11 +216,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!data) {
|
if (!data) {
|
||||||
throw new Error(`${lastError || 'Migration fejlede'} (forsøgt: ${attempts.join(' | ')})`);
|
throw new Error(`${hardError || lastError || 'Migration fejlede'} (forsøgt: ${attempts.join(' | ')})`);
|
||||||
}
|
}
|
||||||
|
|
||||||
feedback.className = 'alert alert-success mt-3';
|
feedback.className = 'alert alert-success mt-3';
|
||||||
feedback.innerHTML = `<strong>Migration kørt</strong><br><pre class="mb-0">${data.output}</pre>`;
|
const output = data.output || data.message || 'Migration executed successfully';
|
||||||
|
feedback.innerHTML = `<strong>Migration kørt</strong><br><pre class="mb-0">${output}</pre>`;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
feedback.className = 'alert alert-danger mt-3';
|
feedback.className = 'alert alert-danger mt-3';
|
||||||
feedback.innerHTML = `<strong>Fejl</strong><br>${error.message}`;
|
feedback.innerHTML = `<strong>Fejl</strong><br>${error.message}`;
|
||||||
@ -291,6 +298,7 @@
|
|||||||
const urls = buildMigrationActionUrls('status');
|
const urls = buildMigrationActionUrls('status');
|
||||||
let data = null;
|
let data = null;
|
||||||
let lastError = null;
|
let lastError = null;
|
||||||
|
let hardError = null;
|
||||||
const attempts = [];
|
const attempts = [];
|
||||||
|
|
||||||
for (const url of urls) {
|
for (const url of urls) {
|
||||||
@ -302,7 +310,12 @@
|
|||||||
data = payload;
|
data = payload;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
lastError = payload.detail || `HTTP ${response.status}`;
|
const errMsg = payload.detail || `HTTP ${response.status}`;
|
||||||
|
if (response.status !== 404 && response.status !== 405) {
|
||||||
|
hardError = errMsg;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
lastError = errMsg;
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
attempts.push(`${url} -> ERR`);
|
attempts.push(`${url} -> ERR`);
|
||||||
lastError = err.message || 'Netvaerksfejl';
|
lastError = err.message || 'Netvaerksfejl';
|
||||||
@ -310,7 +323,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!data) {
|
if (!data) {
|
||||||
throw new Error(`${lastError || 'Status check fejlede'} (forsøgt: ${attempts.join(' | ')})`);
|
throw new Error(`${hardError || lastError || 'Status check fejlede'} (forsøgt: ${attempts.join(' | ')})`);
|
||||||
}
|
}
|
||||||
|
|
||||||
const statuses = data.statuses || [];
|
const statuses = data.statuses || [];
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user