import ogRequest, { ApiResponse } from '@/request'
export type SessionGeneralDetail = {
state: string
sessionid: string
lwtid: string
usename: string
backend_start: string
backend_runtime: string
resource_pool: string
client_addr: string
client_hostname: string
client_port: string
application_name: string
datname: string
xact_start: string
query_start: string
query_id: string
block_sessionid: string
filepath: string
page: string
tuple: string
bucket: string
wait_status: string
wait_event: string
lockmode: string
namespace_relation: string
query: string
}
export type BlockTable = {
depth: string
application_name: string
tree_id: string
backend_start: string
hasChildren?: boolean
children?: undefined | BlockTable[]
client_addr: string
datname: string
pathid: string
id: string
usename: string
state: string
parentid: string
}
export type Statistic = {
type: string
name: string
value: string
}
export type WaitingRecord = {
event: string
lockmode: string
locktag: string
sample_time: string
wait_status: string
}
export type SessionDetail = {
general: SessionGeneralDetail
blockTree: BlockTable[]
statistic: Statistic[]
waiting: WaitingRecord[]
}
export async function getSessionDetail(
instanceId: string,
sessionId: string
): Promise<void | ApiResponse<SessionDetail>> {
return ogRequest.get('/instanceMonitoring/api/v1/session/detail', {
id: instanceId,
sessionid: sessionId,
})
}