Files
kaidi/frontend/src/api/setup.ts
T
2026-08-17 14:08:40 +08:00

62 lines
1.6 KiB
TypeScript

import { request } from '@/utils/request';
export interface SetupStatus {
required: boolean;
locked: boolean;
supportedDatabaseTypes: string[];
message: string;
}
export interface SetupDatabaseRequest {
setupCode: string;
databaseType: 'MYSQL' | 'POSTGRESQL';
host: string;
port: number;
database: string;
username: string;
password: string;
}
export interface SetupConnection {
successful: boolean;
databaseType: string;
serverVersion: string;
schemaReady: boolean;
message: string;
}
export interface SetupCompleteRequest extends SetupDatabaseRequest {
adminUsername: string;
adminDisplayName: string;
adminPassword: string;
adminPasswordConfirmation: string;
}
export interface SetupCompleted {
completed: boolean;
username: string;
message: string;
restartAfterSeconds: number;
}
function normalizeStatus(value: SetupStatus): SetupStatus {
return {
required: Boolean(value?.required),
locked: Boolean(value?.locked),
supportedDatabaseTypes: Array.isArray(value?.supportedDatabaseTypes) ? value.supportedDatabaseTypes : [],
message: value?.message || '',
};
}
export function getSetupStatus() {
return request.get<SetupStatus>({ url: '/setup/status' }).then(normalizeStatus);
}
export function testSetupConnection(data: SetupDatabaseRequest) {
return request.post<SetupConnection>({ url: '/setup/test-connection', data }).then((value) => value);
}
export function completeSetup(data: SetupCompleteRequest) {
return request.post<SetupCompleted>({ url: '/setup/complete', data }).then((value) => value);
}