62 lines
1.6 KiB
TypeScript
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);
|
|
}
|