Boost Azure Demo
This commit is contained in:
89
Backend/internal/assignmentgen/service_helpers.go
Normal file
89
Backend/internal/assignmentgen/service_helpers.go
Normal file
@@ -0,0 +1,89 @@
|
||||
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"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user