30 lines
859 B
TypeScript
30 lines
859 B
TypeScript
import { getDb } from '../../../utils/db'
|
|
|
|
export default defineEventHandler((event) => {
|
|
const query = getQuery(event)
|
|
const targetId = query.target_id as string
|
|
|
|
if (!targetId) {
|
|
throw createError({
|
|
statusCode: 400,
|
|
message: 'target_id is required'
|
|
})
|
|
}
|
|
|
|
const db = getDb()
|
|
|
|
// 최신 수집 시간 기준 디스크 목록 (물리 디스크만)
|
|
const disks = db.prepare(`
|
|
SELECT DISTINCT device_name, mount_point, fs_type, disk_total, disk_used, disk_percent
|
|
FROM server_disks
|
|
WHERE target_id = ?
|
|
AND collected_at = (SELECT MAX(collected_at) FROM server_disks WHERE target_id = ?)
|
|
AND device_name NOT LIKE '%loop%'
|
|
AND mount_point NOT LIKE '%/snap%'
|
|
AND fs_type NOT IN ('tmpfs', 'squashfs', 'overlay')
|
|
ORDER BY mount_point ASC
|
|
`).all(targetId, targetId)
|
|
|
|
return disks
|
|
})
|