You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

31 lines
910 B
Go

package question
import (
"strings"
domain "knowfoolery/backend/services/question-bank-service/internal/domain/question"
sharedsecurity "knowfoolery/backend/shared/infra/security"
)
func sanitizeAndValidateItem(item BulkImportItem) (BulkImportItem, error) {
sanitized := BulkImportItem{
Theme: sharedsecurity.SanitizeTheme(item.Theme),
Text: sharedsecurity.SanitizeQuestionText(item.Text),
Answer: sharedsecurity.SanitizeAnswer(item.Answer),
Hint: sharedsecurity.SanitizeQuestionText(item.Hint),
Difficulty: item.Difficulty,
}
if sanitized.Theme == "" || sanitized.Text == "" || sanitized.Answer == "" {
return BulkImportItem{}, domain.ErrValidationFailed
}
if !domain.IsValidDifficulty(sanitized.Difficulty) {
return BulkImportItem{}, domain.ErrValidationFailed
}
if strings.TrimSpace(sanitized.Hint) == "" {
sanitized.Hint = ""
}
return sanitized, nil
}