Files
mayfly-go/frontend/src/views/ops/db/api.ts

105 lines
4.9 KiB
TypeScript
Raw Normal View History

2021-01-08 15:37:32 +08:00
import Api from '@/common/Api';
import { AesEncrypt } from '@/common/crypto';
2021-01-08 15:37:32 +08:00
export const dbApi = {
// 获取权限列表
dbs: Api.newGet('/dbs'),
dbTags: Api.newGet('/dbs/tags'),
saveDb: Api.newPost('/dbs'),
deleteDb: Api.newDelete('/dbs/{id}'),
dumpDb: Api.newPost('/dbs/{id}/dump'),
tableInfos: Api.newGet('/dbs/{id}/t-infos'),
tableIndex: Api.newGet('/dbs/{id}/t-index'),
tableDdl: Api.newGet('/dbs/{id}/t-create-ddl'),
copyTable: Api.newPost('/dbs/{id}/copy-table'),
columnMetadata: Api.newGet('/dbs/{id}/c-metadata'),
pgSchemas: Api.newGet('/dbs/{id}/pg/schemas'),
2021-01-08 15:37:32 +08:00
// 获取表即列提示
hintTables: Api.newGet('/dbs/{id}/hint-tables'),
sqlExec: Api.newPost('/dbs/{id}/exec-sql').withBeforeHandler(async (param: any) => await encryptField(param, 'sql')),
2021-01-08 15:37:32 +08:00
// 保存sql
saveSql: Api.newPost('/dbs/{id}/sql'),
2021-01-08 15:37:32 +08:00
// 获取保存的sql
getSql: Api.newGet('/dbs/{id}/sql'),
// 获取保存的sql names
getSqlNames: Api.newGet('/dbs/{id}/sql-names'),
deleteDbSql: Api.newDelete('/dbs/{id}/sql'),
// 获取数据库sql执行记录
getSqlExecs: Api.newGet('/dbs/sql-execs'),
// 获取数据库兼容版本
getCompatibleDbVersion: Api.newGet('/dbs/{id}/version'),
2023-08-27 11:07:29 +08:00
instances: Api.newGet('/instances'),
getInstance: Api.newGet('/instances/{instanceId}'),
getAllDatabase: Api.newPost('/instances/databases'),
2024-05-16 17:26:32 +08:00
getDbNamesByAc: Api.newGet('/instances/databases/{authCertName}'),
2023-12-20 17:29:16 +08:00
getInstanceServerInfo: Api.newGet('/instances/{instanceId}/server-info'),
testConn: Api.newPost('/instances/test-conn'),
2023-08-27 11:07:29 +08:00
saveInstance: Api.newPost('/instances'),
deleteInstance: Api.newDelete('/instances/{id}'),
2023-12-27 22:59:20 +08:00
// 获取数据库备份列表
getDbBackups: Api.newGet('/dbs/{dbId}/backups'),
createDbBackup: Api.newPost('/dbs/{dbId}/backups'),
deleteDbBackup: Api.newDelete('/dbs/{dbId}/backups/{backupId}'),
2023-12-27 22:59:20 +08:00
getDbNamesWithoutBackup: Api.newGet('/dbs/{dbId}/db-names-without-backup'),
enableDbBackup: Api.newPut('/dbs/{dbId}/backups/{backupId}/enable'),
disableDbBackup: Api.newPut('/dbs/{dbId}/backups/{backupId}/disable'),
startDbBackup: Api.newPut('/dbs/{dbId}/backups/{backupId}/start'),
2023-12-27 22:59:20 +08:00
saveDbBackup: Api.newPut('/dbs/{dbId}/backups/{id}'),
getDbBackupHistories: Api.newGet('/dbs/{dbId}/backup-histories'),
restoreDbBackupHistory: Api.newPost('/dbs/{dbId}/backup-histories/{backupHistoryId}/restore'),
deleteDbBackupHistory: Api.newDelete('/dbs/{dbId}/backup-histories/{backupHistoryId}'),
2023-12-27 22:59:20 +08:00
// 获取数据库恢复列表
2023-12-27 22:59:20 +08:00
getDbRestores: Api.newGet('/dbs/{dbId}/restores'),
createDbRestore: Api.newPost('/dbs/{dbId}/restores'),
deleteDbRestore: Api.newDelete('/dbs/{dbId}/restores/{restoreId}'),
2023-12-27 22:59:20 +08:00
getDbNamesWithoutRestore: Api.newGet('/dbs/{dbId}/db-names-without-restore'),
enableDbRestore: Api.newPut('/dbs/{dbId}/restores/{restoreId}/enable'),
disableDbRestore: Api.newPut('/dbs/{dbId}/restores/{restoreId}/disable'),
saveDbRestore: Api.newPut('/dbs/{dbId}/restores/{id}'),
// 数据同步相关
datasyncTasks: Api.newGet('/datasync/tasks'),
saveDatasyncTask: Api.newPost('/datasync/tasks/save').withBeforeHandler(async (param: any) => await encryptField(param, 'dataSql')),
getDatasyncTask: Api.newGet('/datasync/tasks/{taskId}'),
deleteDatasyncTask: Api.newDelete('/datasync/tasks/{taskId}/del'),
updateDatasyncTaskStatus: Api.newPost('/datasync/tasks/{taskId}/status'),
runDatasyncTask: Api.newPost('/datasync/tasks/{taskId}/run'),
stopDatasyncTask: Api.newPost('/datasync/tasks/{taskId}/stop'),
datasyncLogs: Api.newGet('/datasync/tasks/{taskId}/logs'),
// 数据库迁移相关
dbTransferTasks: Api.newGet('/dbTransfer'),
saveDbTransferTask: Api.newPost('/dbTransfer/save'),
deleteDbTransferTask: Api.newDelete('/dbTransfer/{taskId}/del'),
updateDbTransferTaskStatus: Api.newPost('/dbTransfer/{taskId}/status'),
runDbTransferTask: Api.newPost('/dbTransfer/{taskId}/run'),
stopDbTransferTask: Api.newPost('/dbTransfer/{taskId}/stop'),
dbTransferTaskLogs: Api.newGet('/dbTransfer/{taskId}/logs'),
dbTransferFileList: Api.newGet('/dbTransfer/files/{taskId}'),
dbTransferFileDel: Api.newPost('/dbTransfer/files/del/{fileId}'),
dbTransferFileRun: Api.newPost('/dbTransfer/files/run'),
dbTransferFileDown: Api.newGet('/dbTransfer/files/down/{fileUuid}'),
};
export const dbSqlExecApi = {
// 根据业务key获取sql执行信息
getSqlExecByBizKey: Api.newGet('/dbs/sql-execs'),
};
const encryptField = async (param: any, field: string) => {
// sql编码处理
if (!param['_encrypted'] && param[field]) {
// 判断是开发环境就打印sql
if (process.env.NODE_ENV === 'development') {
console.log(param[field]);
}
// 使用aes加密sql
param['_encrypted'] = 1;
param[field] = AesEncrypt(param[field]);
// console.log('解密结果', DesDecrypt(param[field]));
}
return param;
};