90 lines
2.0 KiB
Go
90 lines
2.0 KiB
Go
package assignmentgen
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"boostai-backend/internal/sqlc"
|
|
|
|
"github.com/jackc/pgx/v5/pgtype"
|
|
)
|
|
|
|
func nullableQuestionTopic(topic sqlc.QuestionTopic) sqlc.NullQuestionTopic {
|
|
if topic == "" {
|
|
return sqlc.NullQuestionTopic{}
|
|
}
|
|
return sqlc.NullQuestionTopic{QuestionTopic: topic, Valid: true}
|
|
}
|
|
|
|
func nullableQuestionDifficulty(difficulty sqlc.QuestionDifficulty) sqlc.NullQuestionDifficulty {
|
|
if difficulty == "" {
|
|
return sqlc.NullQuestionDifficulty{}
|
|
}
|
|
return sqlc.NullQuestionDifficulty{QuestionDifficulty: difficulty, Valid: true}
|
|
}
|
|
|
|
func textValue(value string) pgtype.Text {
|
|
trimmed := strings.TrimSpace(value)
|
|
if trimmed == "" {
|
|
return pgtype.Text{}
|
|
}
|
|
return pgtype.Text{String: trimmed, Valid: true}
|
|
}
|
|
|
|
func firstNonEmpty(values ...string) string {
|
|
for _, value := range values {
|
|
if strings.TrimSpace(value) != "" {
|
|
return strings.TrimSpace(value)
|
|
}
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func mergeTags(base []string, extras ...string) []string {
|
|
seen := make(map[string]struct{}, len(base)+len(extras))
|
|
merged := make([]string, 0, len(base)+len(extras))
|
|
|
|
appendTag := func(tag string) {
|
|
normalized := strings.TrimSpace(strings.ToLower(tag))
|
|
if normalized == "" {
|
|
return
|
|
}
|
|
if _, exists := seen[normalized]; exists {
|
|
return
|
|
}
|
|
seen[normalized] = struct{}{}
|
|
merged = append(merged, normalized)
|
|
}
|
|
|
|
for _, tag := range base {
|
|
appendTag(tag)
|
|
}
|
|
for _, tag := range extras {
|
|
appendTag(tag)
|
|
}
|
|
|
|
return merged
|
|
}
|
|
|
|
func questionTopicLabel(topic sqlc.QuestionTopic) string {
|
|
switch topic {
|
|
case sqlc.QuestionTopicPlaceValue:
|
|
return "Place value"
|
|
case sqlc.QuestionTopicArithmetic:
|
|
return "Arithmetic"
|
|
case sqlc.QuestionTopicNegativeNumbers:
|
|
return "Negative numbers"
|
|
case sqlc.QuestionTopicBidmas:
|
|
return "BIDMAS"
|
|
case sqlc.QuestionTopicFractions:
|
|
return "Fractions"
|
|
case sqlc.QuestionTopicAlgebra:
|
|
return "Algebra"
|
|
case sqlc.QuestionTopicGeometry:
|
|
return "Geometry"
|
|
case sqlc.QuestionTopicData:
|
|
return "Data"
|
|
default:
|
|
return "Maths"
|
|
}
|
|
}
|