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
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
|
|
}
|