2025-06-10 21:09:58 +02:00
|
|
|
package store
|
|
|
|
|
|
|
|
import (
|
2025-06-13 16:55:46 +02:00
|
|
|
"time"
|
|
|
|
|
|
|
|
"gorm.io/datatypes"
|
2025-06-10 21:09:58 +02:00
|
|
|
"gorm.io/gorm"
|
|
|
|
)
|
|
|
|
|
|
|
|
var models = []any{
|
|
|
|
&Player{},
|
2025-06-13 16:55:46 +02:00
|
|
|
&QuizCategory{},
|
|
|
|
&QuizEntry{},
|
|
|
|
&QuizTurn{},
|
2025-06-10 21:09:58 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
type Player struct {
|
|
|
|
gorm.Model
|
|
|
|
|
2025-06-13 16:55:46 +02:00
|
|
|
Name string
|
|
|
|
|
2025-06-15 14:46:32 +02:00
|
|
|
UserEmail string `gorm:"index"`
|
2025-06-13 16:55:46 +02:00
|
|
|
UserProvider string `gorm:"index"`
|
|
|
|
|
2025-06-10 21:09:58 +02:00
|
|
|
Score int
|
2025-06-13 16:55:46 +02:00
|
|
|
|
|
|
|
PlayedAt time.Time
|
2025-06-15 14:46:32 +02:00
|
|
|
|
|
|
|
SelectedEntry *uint
|
|
|
|
SelectedTurn *uint
|
|
|
|
SelectedAt time.Time
|
|
|
|
SelectedAnswer *int
|
2025-06-13 16:55:46 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
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
|
2025-06-10 21:09:58 +02:00
|
|
|
}
|