提交 2abd95ff authored 作者: vipcxj's avatar vipcxj

增加app管理相关api

上级 295c43c4
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
<w>roadhog</w> <w>roadhog</w>
<w>sizeme</w> <w>sizeme</w>
<w>splited</w> <w>splited</w>
<w>undeploy</w>
<w>unescape</w> <w>unescape</w>
<w>unnormed</w> <w>unnormed</w>
<w>unregister</w> <w>unregister</w>
......
...@@ -3,6 +3,5 @@ ...@@ -3,6 +3,5 @@
<component name="JavaScriptLibraryMappings"> <component name="JavaScriptLibraryMappings">
<file url="file://$PROJECT_DIR$" libraries="{app-web-client/node_modules}" /> <file url="file://$PROJECT_DIR$" libraries="{app-web-client/node_modules}" />
<file url="PROJECT" libraries="{app-web-client/node_modules, polyfill}" /> <file url="PROJECT" libraries="{app-web-client/node_modules, polyfill}" />
<includedPredefinedLibrary name="Node.js Core" />
</component> </component>
</project> </project>
\ No newline at end of file
import _ from 'lodash';
import request from '../utils/request';
import post from '../utils/post';
import config from '../utils/config';
const { isNumber, isFinite, isString } = _;
/**
* @typedef {Object} RestResponse
* @template T
* @property {number} errorCode 错误码,0表示成功
* @property {T} data 数据
*/
/**
* @typedef {Object} DeploymentInfo 部署信息
* @property {id} number
* @property {string} versionNumber
* @property {string} description
* @property {Date} updateTime
* @property {string} uri
*/
/**
* @typedef {Object} AppInfo app信息
* @property {string} name 名称
* @property {string} description 描述
* @property {string} packageName 包名
* @property {Array.<DeploymentInfo>} history 历史部署信息
*/
/**
*
* @param name 对app名字的筛选条件,支持模糊查询,为空时等价于查全部
* @param pst 分页的开始位置,-1代表不分页
* @param psz 分页的大小
* @returns {Promise.<RestResponse.<Array.<AppInfo>>>} 所有符合条件的app信息
*/
export const getAppInfoes = async (name, pst = -1, psz = -1) => {
return request(`${config.apiContextPath}/api/app/admin/apps/list`, { name, pst, psz });
};
/**
* 新增app
* @param {string} name 名称
* @param {string} packageName
* @param {?string} description
* @returns {Promise.<RestResponse.<AppInfo>>} 新增的app信息
*/
export const addApp = async (name, packageName, description = '') => {
return post(`${config.apiContextPath}/api/app/admin/apps/create`, { name, package: packageName, description });
};
/**
* 删除app,所有部署包会一同删除
* @param {number|string} idOrName app的id或名称,若为数字,则认为是id,字符串则认为是名称
* @returns {Promise.<RestResponse.<null>>}
*/
export const removeApp = async (idOrName) => {
if (isNumber(idOrName) && !isFinite(idOrName)) {
return post(`${config.apiContextPath}/api/app/admin/apps/delete`, { id: idOrName });
} else if (isString(idOrName)) {
return post(`${config.apiContextPath}/api/app/admin/apps/delete`, { name: idOrName });
} else {
throw new Error(`Invalid id or name: ${idOrName}`);
}
};
/**
* 部署app,必须是一个新版本,若版本号低于或等于已部署的最高版本,则会部署失败
* @param {number|string} idOrName app的id或名称,若为数字,则认为是id,字符串则认为是名称
* @param {string} uri apk上传后得到的内部uri
* @param {?string} description 更新说明
* @returns {Promise.<RestResponse.<DeploymentInfo>>} 部署信息
*/
export const deployApp = async (idOrName, uri, description = '') => {
if (isNumber(idOrName) && !isFinite(idOrName)) {
return post(`${config.apiContextPath}/api/app/admin/apps/deploy`, { id: idOrName, uri, description });
} else if (isString(idOrName)) {
return post(`${config.apiContextPath}/api/app/admin/apps/deploy`, { name: idOrName, uri, description });
} else {
throw new Error(`Invalid id or name: ${idOrName}`);
}
};
/**
* 反部署app
* @param id 部署app后返回的部署信息中记录的部署id
* @returns {Promise.<RestResponse.<null>>}
*/
export const undeployApp = async (id) => {
return post(`${config.apiContextPath}/api/app/admin/apps/undeploy`, { id });
};
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论