package checks

import (
	"fmt"
	"github.com/mackerelio/go-osstat/memory"
)

type MemoryConfig struct {
	Max float64 `yaml:"max"`
	MaxSwap float64 `yaml:"max_swap"`
	Enabled bool `yaml:"enabled"`
}

type Memory struct {
	Config MemoryConfig
}

func (h Memory) Execute() (ok bool, data interface{}, err error) {
	if h.Config.Enabled == false {
		return true, nil, nil
	}
	memory, err := memory.Get()
	fmt.Println(memory)
	p := float64(100) / float64(memory.Total) * float64(memory.Used)
	ps :=  float64(100) / float64(memory.SwapTotal) * float64(memory.SwapUsed)
	res := make(map[string]interface{})
	res["row"] = memory
	res["ram"] = p
	res["swap"] = ps
	if memory.SwapTotal == 0 {
		res["swap"] = 100
	}

	fmt.Println(ps)
	if p > h.Config.Max {
		return false, res, nil
	}
	if ps > h.Config.MaxSwap {
		return false, res, nil
	}

	return true, res,nil
}

func (h Memory) Name() string {
	return "MemoryUsage"
}