package mysql

import (
	"context"

	"gorm.io/gorm"

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

type downloadAlert struct {
	db *gorm.DB
}

func newDownloadAlert(ds *datastore) *downloadAlert {
	return &downloadAlert{db: ds.db}
}

func (a *downloadAlert) GetByUserAndType(ctx context.Context, user []string, alertType int) ([]*v1.AlertRecord, error) {
	var record []*v1.AlertRecord
	err := a.db.Exec("SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))").Error
	if err != nil {
		return nil, err
	}

	d := a.db.Raw("SELECT user,max(createdAt) as lastTime FROM download_alert WHERE user IN (?) AND alertType = ? GROUP BY user ORDER BY createdAt DESC", user, alertType).Scan(&record)

	return record, d.Error
}

func (a *downloadAlert) Create(_ context.Context, record v1.DownLoadAlert) error {
	return a.db.Create(&record).Error
}
