package repository

import (
	"context"

	"gorm.io/gorm"

	vulnmodel "security-center-backend/internal/modules/vuln/model"
)

type VulnerabilityEventRepository interface {
	Create(ctx context.Context, event *vulnmodel.VulnerabilityEvent) error
	List(ctx context.Context, vulnID uint64) ([]vulnmodel.VulnerabilityEvent, error)
}

type GormVulnerabilityEventRepository struct {
	db *gorm.DB
}

func NewVulnerabilityEventRepository(db *gorm.DB) VulnerabilityEventRepository {
	return &GormVulnerabilityEventRepository{db: db}
}

func (r *GormVulnerabilityEventRepository) Create(ctx context.Context, event *vulnmodel.VulnerabilityEvent) error {
	return r.db.WithContext(ctx).Create(event).Error
}

func (r *GormVulnerabilityEventRepository) List(ctx context.Context, vulnID uint64) ([]vulnmodel.VulnerabilityEvent, error) {
	var events []vulnmodel.VulnerabilityEvent
	if err := r.db.WithContext(ctx).
		Where("vulnerability_id = ?", vulnID).
		Order("created_at ASC").
		Find(&events).Error; err != nil {
		return nil, err
	}
	return events, nil
}
