package system

import (
	"kra/pkg/server"

	"github.com/go-kratos/kratos/v2/errors"
	"github.com/go-kratos/kratos/v2/transport/http"
)

// SystemConfigService 系统配置服务
type SystemConfigService struct {
	diskMountPoints []string
}

// NewSystemConfigService 创建系统配置服务
func NewSystemConfigService() *SystemConfigService {
	// 默认磁盘挂载点，可以从配置中读取
	return &SystemConfigService{
		diskMountPoints: []string{"/"},
	}
}

// RegisterRoutes 注册路由
func (s *SystemConfigService) RegisterRoutes(rg *RouterGroup) {
	// 读操作（不记录）
	rg.Private.POST("/system/getServerInfo", s.handleGetServerInfo)
}

// handleGetServerInfo 获取服务器信息
func (s *SystemConfigService) handleGetServerInfo(ctx http.Context) error {
	serverInfo, err := server.GetServerInfo(s.diskMountPoints)
	if err != nil {
		return errors.InternalServer("GET_SERVER_INFO_FAILED", "获取失败:"+err.Error())
	}
	return ctx.Result(200, map[string]any{
		"code": 0,
		"msg":  "获取成功",
		"data": map[string]any{"server": serverInfo},
	})
}
