Add Stat struct to database

This commit is contained in:
qowevisa 2025-02-16 00:33:56 +02:00
parent 799e77964a
commit bc8bd1d0c7
3 changed files with 71 additions and 1 deletions

View File

@ -43,6 +43,11 @@ func Connect() *gorm.DB {
log.Panic(err)
}
newUDB := gormDB
gormDB.AutoMigrate(&Word{})
if err := gormDB.AutoMigrate(&Word{}); err != nil {
log.Panic(err)
}
if err := gormDB.AutoMigrate(&Stat{}); err != nil {
log.Panic(err)
}
return newUDB
}

18
db/stat.go Normal file
View File

@ -0,0 +1,18 @@
package db
import (
"gorm.io/gorm"
)
type Stat struct {
gorm.Model
Skipped uint
Correct uint
False uint
Words uint
Finished bool
CPM float64
WPM float64
// Time in milliseconds
TimeTaken int64
}

47
db/stat_test.go Normal file
View File

@ -0,0 +1,47 @@
package db_test
import (
"testing"
"time"
"tipitypy/db"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
// Setup a test database
func setupDB() (*gorm.DB, error) {
dbc, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
if err != nil {
return nil, err
}
dbc.AutoMigrate(&db.Stat{})
return dbc, nil
}
func TestTypingSession(t *testing.T) {
dbc, err := setupDB()
if err != nil {
t.Fatalf("failed to connect to test database: %v", err)
}
// Insert a record
expectedDuration := 5 * time.Second
session := db.Stat{
TimeTaken: expectedDuration.Milliseconds(),
}
if err := dbc.Create(&session).Error; err != nil {
t.Fatalf("failed to insert session: %v", err)
}
// Retrieve the record
var retrieved db.Stat
if err := dbc.First(&retrieved, session.ID).Error; err != nil {
t.Fatalf("failed to retrieve session: %v", err)
}
// Compare values
if retrieved.TimeTaken != expectedDuration.Milliseconds() {
t.Errorf("expected %d ms, got %d ms", expectedDuration.Milliseconds(), retrieved.TimeTaken)
}
}