Files
sub2api/frontend/src/api/admin/system.ts

82 lines
1.8 KiB
TypeScript
Raw Normal View History

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;
}
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,
performUpdate,
rollback,
restartService,
2025-12-18 13:50:39 +08:00
};
export default systemAPI;