2025-12-18 13:50:39 +08:00
|
|
|
/**
|
|
|
|
|
* System API endpoints for admin operations
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
import { apiClient } from '../client';
|
|
|
|
|
|
|
|
|
|
export interface ReleaseInfo {
|
|
|
|
|
name: string;
|
|
|
|
|
body: string;
|
|
|
|
|
published_at: string;
|
|
|
|
|
html_url: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface VersionInfo {
|
|
|
|
|
current_version: string;
|
|
|
|
|
latest_version: string;
|
|
|
|
|
has_update: boolean;
|
|
|
|
|
release_info?: ReleaseInfo;
|
|
|
|
|
cached: boolean;
|
|
|
|
|
warning?: string;
|
|
|
|
|
build_type: string; // "source" for manual builds, "release" for CI builds
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Get current version
|
|
|
|
|
*/
|
|
|
|
|
export async function getVersion(): Promise<{ version: string }> {
|
|
|
|
|
const { data } = await apiClient.get<{ version: string }>('/admin/system/version');
|
|
|
|
|
return data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Check for updates
|
|
|
|
|
* @param force - Force refresh from GitHub API
|
|
|
|
|
*/
|
|
|
|
|
export async function checkUpdates(force = false): Promise<VersionInfo> {
|
|
|
|
|
const { data } = await apiClient.get<VersionInfo>('/admin/system/check-updates', {
|
|
|
|
|
params: force ? { force: 'true' } : undefined,
|
|
|
|
|
});
|
|
|
|
|
return data;
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-18 21:15:10 +08:00
|
|
|
export interface UpdateResult {
|
|
|
|
|
message: string;
|
|
|
|
|
need_restart: boolean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Perform system update
|
|
|
|
|
* Downloads and applies the latest version
|
|
|
|
|
*/
|
|
|
|
|
export async function performUpdate(): Promise<UpdateResult> {
|
|
|
|
|
const { data } = await apiClient.post<UpdateResult>('/admin/system/update');
|
|
|
|
|
return data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Rollback to previous version
|
|
|
|
|
*/
|
|
|
|
|
export async function rollback(): Promise<UpdateResult> {
|
|
|
|
|
const { data } = await apiClient.post<UpdateResult>('/admin/system/rollback');
|
|
|
|
|
return data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Restart the service
|
|
|
|
|
*/
|
|
|
|
|
export async function restartService(): Promise<{ message: string }> {
|
|
|
|
|
const { data } = await apiClient.post<{ message: string }>('/admin/system/restart');
|
|
|
|
|
return data;
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-18 13:50:39 +08:00
|
|
|
export const systemAPI = {
|
|
|
|
|
getVersion,
|
|
|
|
|
checkUpdates,
|
2025-12-18 21:15:10 +08:00
|
|
|
performUpdate,
|
|
|
|
|
rollback,
|
|
|
|
|
restartService,
|
2025-12-18 13:50:39 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export default systemAPI;
|