Add Stat struct to database
This commit is contained in:
parent
799e77964a
commit
bc8bd1d0c7
7
db/db.go
7
db/db.go
|
@ -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
18
db/stat.go
Normal 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
47
db/stat_test.go
Normal 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)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user