Files
kouiz/internal/store/models.go
2025-06-18 19:12:16 +02:00

81 lines
1.2 KiB
Go

package store
import (
"fmt"
"time"
"gorm.io/datatypes"
"gorm.io/gorm"
)
var models = []any{
&Player{},
&QuizCategory{},
&QuizEntry{},
&QuizTurn{},
}
type Player struct {
gorm.Model
Name string
UserEmail string `gorm:"index"`
UserProvider string `gorm:"index"`
Score int
PlayedAt time.Time
SelectedEntry *uint
SelectedTurn *uint
SelectedAt time.Time
SelectedAnswer *int
}
type QuizTurn struct {
gorm.Model
StartedAt time.Time `gorm:"index"`
EndedAt time.Time `gorm:"index"`
Entries []*QuizEntry `gorm:"many2many:quiz_turn_entries;"`
}
type QuizCategory struct {
gorm.Model
Name string `gorm:"index"`
Theme string `gorm:"index"`
Description string
}
type QuizEntry struct {
gorm.Model
Category *QuizCategory
CategoryID uint
Provider string `gorm:"index"`
ProviderID string `gorm:"index"`
Question string
Propositions datatypes.JSONSlice[string]
Answer string
Level uint `gorm:"index"`
Anecdote string
}
func DifficultyLevel(level uint) string {
switch level {
case 0:
return "Débutant"
case 1:
return "Confirmé"
case 2:
return "Expert"
default:
return fmt.Sprintf("Hors catégorie (%d)", level)
}
}