import axios from "axios";
export type OpenGaussNode = {
dbName: string;
dbType: string;
dbUser: string;
dbUserPassword: string;
id: string;
instanceId: string;
ip: string;
port: number;
serverId: string;
}
export type ServerInfo = {
id: string;
ip: string;
os: string;
port: number;
userName: string;
userPassword: string;
}
export type OpenGaussInstance = {
dbVersion: string;
id: string;
name: string;
nodeInfo: Partial<OpenGaussNode>[],
remark: string;
serverInfoReq: Partial<ServerInfo>;
serverInfoResp?: Partial<ServerInfo>;
type: string;
vip: string;
port: number;
}
export async function getList(keyword?: string, page?: number, limit?: number): Promise<Partial<OpenGaussInstance>[]> {
let resp = await axios.post('/sql-diagnosis/api/v1/instance/list', { keyword, page, limit });
return resp.data.data;
}
export async function getDetail(id: string): Promise<Partial<OpenGaussInstance>> {
let resp = await axios.get(`/sql-diagnosis/api/v1/instance/detail/${id}`);
return resp.data.data;
}
export async function deleteInstance(id: string): Promise<boolean> {
let resp = await axios.post('/sql-diagnosis/api/v1/instance/delete', [id]);
return resp.data.data;
}
export async function addInstance(entry: Partial<OpenGaussInstance>): Promise<Partial<OpenGaussInstance>> {
let resp = await axios.post('/sql-diagnosis/api/v1/instance/add', entry);
return resp.data.data;
}
export async function updateInstance(entry: Partial<OpenGaussInstance>): Promise<Partial<OpenGaussInstance>> {
let resp = await axios.post(`/sql-diagnosis/api/v1/instance/update/${entry.id}`, entry);
return resp.data.data;
}
export async function testConnection(dbNode: Partial<OpenGaussNode>): Promise<boolean> {
let resp = await axios.post('/sql-diagnosis/api/v1/instance/connect', dbNode);
return resp.data.code === '200' || resp.data.code === 200;
}