package service

import (
	"sec-cycle-scan/common"
	"sec-cycle-scan/model"
	"time"
)

func CreateSecretResult(s model.SecretResult) (int64, error) {

	db := common.DB.Where("vul_unq_id = ?", s.VulUnqID).FirstOrCreate(&s)
	if err := db.Error; err != nil {
		return db.RowsAffected, err
	}

	return db.RowsAffected, nil
}

func GetSecretInfo(id string) (model.SecretResult, error) {

	var s model.SecretResult
	err := common.DB.Where("vul_unq_id = ?", id).First(&s).Error
	if err != nil {
		return s, err
	}

	return s, nil
}

func GetSecretListByRepo(id string) (s []model.SecretResult, err error) {
	err = common.DB.Where("repo_link = ?", id).Find(&s).Error
	if err != nil {
		return s, err
	}

	return s, nil
}

func UpdateSecretState(ids []string, state int) (int64, error) {

	var affectedRows int64
	db := common.DB.Table("secret_result").
		Where("vul_unq_id IN (?)", ids).
		Updates(model.SecretResult{State: state, UpdatedAt: time.Now()}).
		Count(&affectedRows)

	if db.Error != nil {
		return 0, db.Error
	}

	return affectedRows, nil
}
