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)
|
log.Panic(err)
|
||||||
}
|
}
|
||||||
newUDB := gormDB
|
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
|
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