package mysql

import (
	"context"

	"gorm.io/gorm"

	v1 "github.com/pingcap-inc/pchub/model/v1"
)

type trustAdvisor struct {
	db *gorm.DB
}

func newTrustAdvisor(ds *datastore) *trustAdvisor {
	return &trustAdvisor{db: ds.db}
}

func (ta *trustAdvisor) ListSecurityItems(ctx context.Context, rid uint64) ([]v1.TrustAdvisor, error) {
	var res []v1.TrustAdvisor
	d := ta.db.
		Model(&v1.TrustAdvisor{}).
		Joins("JOIN cloud_resource ON cloud_resource.id = trust_advisor.cloudResourceID").
		Where("cloudResourceID = ?", rid).
		Where("category = 'security'").
		Where("cloud_resource.classType <> 'Prod'").
		Order("timestamp DESC").
		Find(&res)

	return res, dbNotFoundErrorWrap(d.Error)
}
