You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
2.3 KiB
Go
115 lines
2.3 KiB
Go
3 years ago
|
package models
|
||
|
|
||
|
import (
|
||
|
"gorm.io/driver/postgres"
|
||
|
"gorm.io/driver/sqlite"
|
||
|
"gorm.io/gorm"
|
||
|
"gorm.io/gorm/logger"
|
||
|
)
|
||
|
|
||
|
var DB *gorm.DB
|
||
|
var phaseOneID uint
|
||
|
|
||
|
func ConnectDatabaseDev() {
|
||
|
database, err := gorm.Open(sqlite.Open("dev.db"), &gorm.Config{
|
||
|
Logger: logger.Default.LogMode(logger.Warn),
|
||
|
})
|
||
|
if err != nil {
|
||
|
panic("Couldn't connect to database")
|
||
|
}
|
||
|
|
||
|
database.AutoMigrate(&Card{}, &CardDeck{}, &Phase{})
|
||
|
|
||
|
DB = database
|
||
|
}
|
||
|
func ConnectDatabase() {
|
||
|
database, err := gorm.Open(postgres.Open(""), &gorm.Config{
|
||
|
Logger: logger.Default.LogMode(logger.Warn),
|
||
|
})
|
||
|
if err != nil {
|
||
|
panic("Couldn't connect to database")
|
||
|
}
|
||
|
|
||
|
database.AutoMigrate(&Card{}, &CardDeck{}, &Phase{}, &User{})
|
||
|
|
||
|
DB = database
|
||
|
}
|
||
|
|
||
|
func SeedDatabase() {
|
||
|
|
||
|
var phaseCount int64
|
||
|
var phaseOne Phase
|
||
|
if DB.Table("phases").Count(&phaseCount); phaseCount == 0 {
|
||
|
phaseFive := Phase{
|
||
|
Name: "Phase 5",
|
||
|
PauseLength: 90,
|
||
|
}
|
||
|
phaseFour := Phase{
|
||
|
Name: "Phase 4",
|
||
|
PauseLength: 30,
|
||
|
}
|
||
|
phaseThree := Phase{
|
||
|
Name: "Phase 3",
|
||
|
PauseLength: 14,
|
||
|
}
|
||
|
phaseTwo := Phase{
|
||
|
Name: "Phase 2",
|
||
|
PauseLength: 7,
|
||
|
}
|
||
|
phaseOne = Phase{
|
||
|
Name: "Phase 1",
|
||
|
PauseLength: 3,
|
||
|
}
|
||
|
DB.Create(&phaseOne)
|
||
|
DB.Create(&phaseTwo)
|
||
|
DB.Create(&phaseThree)
|
||
|
DB.Create(&phaseFour)
|
||
|
DB.Create(&phaseFive)
|
||
|
DB.Save(&phaseOne)
|
||
|
DB.Save(&phaseTwo)
|
||
|
DB.Save(&phaseThree)
|
||
|
DB.Save(&phaseFour)
|
||
|
DB.Save(&phaseFive)
|
||
|
phaseTwo.FirstID = &phaseOne.ID
|
||
|
phaseThree.FirstID = &phaseOne.ID
|
||
|
phaseFour.FirstID = &phaseOne.ID
|
||
|
phaseFive.FirstID = &phaseOne.ID
|
||
|
phaseOne.NextID = &phaseTwo.ID
|
||
|
phaseTwo.NextID = &phaseThree.ID
|
||
|
phaseThree.NextID = &phaseFour.ID
|
||
|
phaseFour.NextID = &phaseFive.ID
|
||
|
DB.Save(&phaseOne)
|
||
|
DB.Save(&phaseTwo)
|
||
|
DB.Save(&phaseThree)
|
||
|
DB.Save(&phaseFour)
|
||
|
DB.Save(&phaseFive)
|
||
|
|
||
|
} else {
|
||
|
DB.First(&phaseOne, &Phase{First: nil})
|
||
|
}
|
||
|
phaseOneID = phaseOne.ID
|
||
|
|
||
|
var cardDeckCount int64
|
||
|
if DB.Table("card_decks").Count(&cardDeckCount); cardDeckCount == 0 {
|
||
|
cardDeck := CardDeck{
|
||
|
Title: "Test Stapel",
|
||
|
Description: "Dieser Stapel wurde als Beispiel erstllt",
|
||
|
Cards: []Card{
|
||
|
{
|
||
|
Front: "Hallo",
|
||
|
Back: "Hello",
|
||
|
Hint: "Hallo in Englisch",
|
||
|
},
|
||
|
{
|
||
|
Front: "Auf Wiedersehen",
|
||
|
Back: "Bye",
|
||
|
Hint: "Auf Wiedersehen auf Englisch",
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
DB.Create(&cardDeck)
|
||
|
|
||
|
DB.Save(&cardDeck)
|
||
|
}
|
||
|
}
|