Files
BoostAI/Backend/internal/assignmentgen/service_helpers.go
2026-05-25 17:05:06 +01:00

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