2024-11-07 19:07:41 +00:00
|
|
|
package db
|
|
|
|
|
|
|
|
import (
|
|
|
|
"gorm.io/gorm"
|
2024-11-16 02:34:07 +07:00
|
|
|
"rul.sh/vaulterm/server/lib"
|
|
|
|
"rul.sh/vaulterm/server/models"
|
2024-11-07 19:07:41 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
type SeedFn func(*gorm.DB) error
|
|
|
|
|
|
|
|
var seeders = []SeedFn{
|
|
|
|
seedUsers,
|
|
|
|
}
|
|
|
|
|
|
|
|
func seedUsers(tx *gorm.DB) error {
|
|
|
|
var userCount int64
|
|
|
|
if res := tx.Model(&models.User{}).Count(&userCount); res.Error != nil {
|
|
|
|
return res.Error
|
|
|
|
}
|
|
|
|
|
|
|
|
// skip seeder if users already exist
|
|
|
|
if userCount > 0 {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
testPasswd, err := lib.HashPassword("123456")
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2024-11-12 19:15:13 +07:00
|
|
|
teams := []*models.Team{
|
|
|
|
{
|
|
|
|
Name: "My Team",
|
|
|
|
Icon: "☘️",
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
if res := tx.Create(&teams); res.Error != nil {
|
|
|
|
return res.Error
|
|
|
|
}
|
|
|
|
|
|
|
|
userList := []*models.User{
|
2024-11-07 19:07:41 +00:00
|
|
|
{
|
|
|
|
Name: "Admin",
|
|
|
|
Username: "admin",
|
|
|
|
Password: testPasswd,
|
|
|
|
Email: "admin@mail.com",
|
|
|
|
Role: models.UserRoleAdmin,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
Name: "John Doe",
|
|
|
|
Username: "user",
|
|
|
|
Password: testPasswd,
|
|
|
|
Email: "user@mail.com",
|
|
|
|
},
|
2024-11-12 19:15:13 +07:00
|
|
|
{
|
|
|
|
Name: "Mary Doe",
|
|
|
|
Username: "user2",
|
|
|
|
Password: testPasswd,
|
|
|
|
Email: "user2@mail.com",
|
|
|
|
},
|
2024-11-07 19:07:41 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if res := tx.Create(&userList); res.Error != nil {
|
|
|
|
return res.Error
|
|
|
|
}
|
|
|
|
|
2024-11-12 19:15:13 +07:00
|
|
|
teamMembers := []models.TeamMembers{
|
2024-11-12 17:17:10 +00:00
|
|
|
{TeamID: teams[0].ID, UserID: userList[0].ID, Role: models.TeamRoleOwner},
|
|
|
|
{TeamID: teams[0].ID, UserID: userList[1].ID, Role: models.TeamRoleAdmin},
|
|
|
|
{TeamID: teams[0].ID, UserID: userList[2].ID, Role: models.TeamRoleMember},
|
2024-11-12 19:15:13 +07:00
|
|
|
}
|
|
|
|
|
|
|
|
if res := tx.Create(&teamMembers); res.Error != nil {
|
|
|
|
return res.Error
|
|
|
|
}
|
|
|
|
|
2024-11-07 19:07:41 +00:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func runSeeders(db *gorm.DB) {
|
|
|
|
db.Transaction(func(tx *gorm.DB) error {
|
|
|
|
for _, seed := range seeders {
|
2024-11-12 19:15:13 +07:00
|
|
|
if err := seed(tx); err != nil {
|
2024-11-07 19:07:41 +00:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
2024-11-12 19:15:13 +07:00
|
|
|
|
2024-11-07 19:07:41 +00:00
|
|
|
return nil
|
|
|
|
})
|
|
|
|
}
|