package repository

import (
	"context"

	"gorm.io/gorm"

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

type VulnerabilityCommentRepository interface {
	List(ctx context.Context, vulnID uint64) ([]vulnmodel.VulnerabilityComment, error)
	Create(ctx context.Context, comment *vulnmodel.VulnerabilityComment) error
}

type GormVulnerabilityCommentRepository struct {
	db *gorm.DB
}

func NewVulnerabilityCommentRepository(db *gorm.DB) VulnerabilityCommentRepository {
	return &GormVulnerabilityCommentRepository{db: db}
}

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

func (r *GormVulnerabilityCommentRepository) Create(ctx context.Context, comment *vulnmodel.VulnerabilityComment) error {
	return r.db.WithContext(ctx).Create(comment).Error
}
