2026-04-23 10:36:51 +00:00
|
|
|
|
import apiService from './api.service'
|
2026-04-28 17:12:14 +00:00
|
|
|
|
import { store } from '@/store'
|
|
|
|
|
|
import { MigrateLogEntry, SetupStatusDto } from '@/proxy/setup/models'
|
2026-04-23 10:36:51 +00:00
|
|
|
|
|
|
|
|
|
|
export const getSetupStatus = () =>
|
|
|
|
|
|
apiService.fetchData<SetupStatusDto>({
|
|
|
|
|
|
method: 'GET',
|
2026-05-24 15:48:55 +00:00
|
|
|
|
url: '/api/setup/application-status',
|
2026-04-23 10:36:51 +00:00
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
export const getMigrateUrl = (): string => {
|
|
|
|
|
|
const base = import.meta.env.VITE_API_URL ?? ''
|
|
|
|
|
|
return `${base}/api/setup/migrate`
|
|
|
|
|
|
}
|
2026-04-28 14:53:58 +00:00
|
|
|
|
|
2026-04-28 17:12:14 +00:00
|
|
|
|
export const streamSetupMigrate = async (
|
|
|
|
|
|
onLog: (entry: MigrateLogEntry) => void,
|
|
|
|
|
|
onDone: () => void,
|
|
|
|
|
|
onError: (err: unknown) => void,
|
|
|
|
|
|
): Promise<void> => {
|
|
|
|
|
|
const token = store.getState().auth.session.token
|
|
|
|
|
|
const url = getMigrateUrl()
|
|
|
|
|
|
try {
|
|
|
|
|
|
const response = await fetch(url, {
|
|
|
|
|
|
method: 'POST',
|
|
|
|
|
|
headers: {
|
|
|
|
|
|
...(token ? { Authorization: `Bearer ${token}` } : {}),
|
|
|
|
|
|
Accept: 'text/event-stream',
|
|
|
|
|
|
},
|
|
|
|
|
|
})
|
|
|
|
|
|
if (!response.ok) {
|
|
|
|
|
|
onError(new Error(`HTTP ${response.status}`))
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
|
|
|
|
|
const reader = response.body?.getReader()
|
|
|
|
|
|
if (!reader) {
|
|
|
|
|
|
onError(new Error('No response body'))
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
|
|
|
|
|
const decoder = new TextDecoder()
|
|
|
|
|
|
let buffer = ''
|
|
|
|
|
|
while (true) {
|
|
|
|
|
|
const { done, value } = await reader.read()
|
|
|
|
|
|
if (done) break
|
|
|
|
|
|
buffer += decoder.decode(value, { stream: true })
|
|
|
|
|
|
const lines = buffer.split('\n')
|
|
|
|
|
|
buffer = lines.pop() ?? ''
|
|
|
|
|
|
for (const line of lines) {
|
|
|
|
|
|
if (line.startsWith('data: ')) {
|
|
|
|
|
|
try {
|
|
|
|
|
|
const data = JSON.parse(line.slice(6)) as MigrateLogEntry
|
|
|
|
|
|
onLog(data)
|
|
|
|
|
|
} catch { /* parse hatası, atla */ }
|
|
|
|
|
|
}
|
2026-04-28 14:53:58 +00:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-04-28 17:12:14 +00:00
|
|
|
|
onDone()
|
|
|
|
|
|
} catch (err) {
|
|
|
|
|
|
onError(err)
|
2026-04-28 14:53:58 +00:00
|
|
|
|
}
|
2026-04-28 17:12:14 +00:00
|
|
|
|
}
|
2026-04-28 14:53:58 +00:00
|
|
|
|
|
|
|
|
|
|
|