change: webui api accept model.

This commit is contained in:
EstrellaXD
2023-08-20 12:20:12 +08:00
parent bffb3dfdc2
commit bb05f40df8
11 changed files with 50 additions and 51 deletions

View File

@@ -83,7 +83,7 @@ async def shutdown_program(current_user=Depends(get_current_user)):
# Check status
@router.get("/check/downloader", tags=["check"])
@router.get("/check/downloader", tags=["check"], response_model=bool)
async def check_downloader_status(current_user=Depends(get_current_user)):
if not current_user:
raise UNAUTHORIZED

View File

@@ -7,6 +7,7 @@ def u_response(response_model: ResponseModel):
return JSONResponse(
status_code=response_model.status_code,
content={
"status": response_model.status,
"msg_en": response_model.msg_en,
"msg_zh": response_model.msg_zh,
},

View File

@@ -1,5 +1,6 @@
import type { BangumiRule, BangumiUpdate } from '#/bangumi';
import type { ApiSuccess } from '#/api';
import type { UniversalResponse } from '#/message';
import type { ApiResponse } from '#/api';
export const apiBangumi = {
/**
@@ -34,7 +35,7 @@ export const apiBangumi = {
async updateRule(bangumiId: number, bangumiRule: BangumiRule) {
const rule = omit(bangumiRule, ['id']);
const { data } = await axios.patch<ApiSuccess>(
const { data } = await axios.patch< ApiResponse >(
`api/v1/bangumi/update/${bangumiId}`,
rule
);
@@ -58,7 +59,7 @@ export const apiBangumi = {
ids = bangumiId;
}
const { data } = await axios.delete<ApiSuccess>(url, {
const { data } = await axios.delete< ApiResponse >(url, {
data: ids,
params: {
file,
@@ -84,7 +85,7 @@ export const apiBangumi = {
ids = bangumiId;
}
const { data } = await axios.delete<ApiSuccess>(url, {
const { data } = await axios.delete< ApiResponse >(url, {
data: ids,
params: {
file,
@@ -98,7 +99,7 @@ export const apiBangumi = {
* @param bangumiId - 需要启用的 bangumi 的 id
*/
async enableRule(bangumiId: number) {
const { data } = await axios.get<ApiSuccess>(
const { data } = await axios.get< UniversalResponse >(
`api/v1/bangumi/enable/${bangumiId}`
);
return data;
@@ -108,9 +109,7 @@ export const apiBangumi = {
* 重置所有 bangumi 数据
*/
async resetAll() {
const { data } = await axios.get<{
message: 'OK';
}>('api/v1/bangumi/resetAll');
const { data } = await axios.get< ApiResponse >('api/v1/bangumi/resetAll');
return data;
},
};

View File

@@ -3,23 +3,8 @@ export const apiCheck = {
* 检测下载器
*/
async downloader() {
const { data } = await axios.get('api/v1/check/downloader');
const { data } = await axios.get<Boolean>('api/v1/check/downloader');
return data;
},
/**
* 检测 RSS
*/
async rss() {
const { data } = await axios.get('api/v1/check/rss');
return data;
},
/**
* 检测所有
*/
async all() {
const { data } = await axios.get('api/v1/check');
return data;
},
};
}

View File

@@ -1,11 +1,12 @@
import type { Config } from '#/config';
import type { UniversalResponse } from '#/message';
export const apiConfig = {
/**
* 获取 config 数据
*/
async getConfig() {
const { data } = await axios.get<Config>('api/v1/getConfig');
const { data } = await axios.get<Config>('api/v1/config/get');
return data;
},
@@ -14,10 +15,10 @@ export const apiConfig = {
* @param newConfig - 需要更新的 config
*/
async updateConfig(newConfig: Config) {
const { data } = await axios.post<{
message: 'Success' | 'Failed to update config';
}>('api/v1/updateConfig', newConfig);
return data.message === 'Success';
const { data } = await axios.patch<UniversalResponse>(
'api/v1/config/update',
newConfig
);
return data;
},
};

View File

@@ -1,4 +1,5 @@
import type { BangumiRule } from '#/bangumi';
import type { UniversalResponse } from '#/message';
interface Status {
status: 'Success';
@@ -30,11 +31,11 @@ export const apiDownload = {
* @param bangumiData - Bangumi 数据
*/
async collection(bangumiData: BangumiRule) {
const { data } = await axios.post<Status>(
const { data } = await axios.post< UniversalResponse >(
'api/v1/download/collection',
bangumiData
);
return data.status === 'Success';
return data;
},
/**
@@ -42,10 +43,10 @@ export const apiDownload = {
* @param bangumiData - Bangumi 数据
*/
async subscribe(bangumiData: BangumiRule) {
const { data } = await axios.post<Status>(
const { data } = await axios.post< UniversalResponse >(
'api/v1/download/subscribe',
bangumiData
);
return data.status === 'Success';
return data;
},
};

View File

@@ -1,3 +1,5 @@
import type { UniversalResponse } from "#/message";
export const apiLog = {
async getLog() {
const { data } = await axios.get<string>('api/v1/log');
@@ -5,7 +7,7 @@ export const apiLog = {
},
async clearLog() {
const { data } = await axios.get<{ status: 'ok' }>('api/v1/log/clear');
return data.status === 'ok';
const { data } = await axios.get<UniversalResponse>('api/v1/log/clear');
return data;
},
};

View File

@@ -1,30 +1,29 @@
interface Success {
status: 'ok';
}
import type { UniversalResponse } from "#/message";
export const apiProgram = {
/**
* 重启
*/
async restart() {
const { data } = await axios.get<Success>('api/v1/restart');
return data.status === 'ok';
const { data } = await axios.get< UniversalResponse >('api/v1/restart');
return data;
},
/**
* 启动
*/
async start() {
const { data } = await axios.get<Success>('api/v1/start');
return data.status === 'ok';
const { data } = await axios.get< UniversalResponse >('api/v1/start');
return data;
},
/**
* 停止
*/
async stop() {
const { data } = await axios.get<Success>('api/v1/stop');
return data.status === 'ok';
const { data } = await axios.get< UniversalResponse >('api/v1/stop');
return data;
},
/**
@@ -42,7 +41,7 @@ export const apiProgram = {
* 终止
*/
async shutdown() {
const { data } = await axios.get<Success>('api/v1/shutdown');
return data.status === 'ok';
const { data } = await axios.get< UniversalResponse >('api/v1/shutdown');
return data;
},
};

View File

@@ -45,8 +45,8 @@ export const useBangumiStore = defineStore('bangumi', () => {
getAll();
}
function actionSuccess({ msg }) {
message.success(msg);
function actionSuccess({ status }) {
message.success(status);
refresh();
}
onUpdateRuleResult(actionSuccess);

View File

@@ -21,3 +21,9 @@ export interface ApiError {
export interface ApiSuccess {
msg: string;
}
export interface ApiResponse {
status: boolean;
msg_en: string;
msg_zh: string;
}

5
webui/types/message.ts Normal file
View File

@@ -0,0 +1,5 @@
export interface UniversalResponse {
status: boolean;
msg_en: string;
msg_zh: string;
}