add QuestionInput sanitization

This commit is contained in:
Dawid Wysokiński 2021-03-06 09:03:39 +01:00
parent b066446051
commit fdb934145a
2 changed files with 20 additions and 2 deletions

View File

@ -2,6 +2,7 @@ package models
import (
"context"
"strings"
"time"
"github.com/99designs/gqlgen/graphql"
@ -80,6 +81,23 @@ func (input *QuestionInput) IsEmpty() bool {
input.QualificationID == nil
}
func (input *QuestionInput) Sanitize() *QuestionInput {
if input.Content != nil {
trimmed := strings.TrimSpace(*input.Content)
input.Content = &trimmed
}
if input.From != nil {
trimmed := strings.TrimSpace(*input.From)
input.From = &trimmed
}
if input.Explanation != nil {
trimmed := strings.TrimSpace(*input.Explanation)
input.Explanation = &trimmed
}
return input
}
func (input *QuestionInput) ToQuestion() *Question {
q := &Question{}
if input.Content != nil {

View File

@ -35,7 +35,7 @@ func New(cfg *Config) (question.Usecase, error) {
}
func (ucase *usecase) Store(ctx context.Context, input *models.QuestionInput) (*models.Question, error) {
if err := ucase.validateInput(input, validateOptions{false}); err != nil {
if err := ucase.validateInput(input.Sanitize(), validateOptions{false}); err != nil {
return nil, err
}
return ucase.questionRepository.Store(ctx, input)
@ -45,7 +45,7 @@ func (ucase *usecase) UpdateOneByID(ctx context.Context, id int, input *models.Q
if id <= 0 {
return nil, fmt.Errorf(messageInvalidID)
}
if err := ucase.validateInput(input, validateOptions{true}); err != nil {
if err := ucase.validateInput(input.Sanitize(), validateOptions{true}); err != nil {
return nil, err
}
item, err := ucase.questionRepository.UpdateOneByID(ctx,