vaulterm/server/db/seeders.go

92 lines
1.7 KiB
Go
Raw Normal View History

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/models"
2024-11-17 19:49:42 +07:00
"rul.sh/vaulterm/server/utils"
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
}
2024-11-17 19:49:42 +07:00
testPasswd, err := utils.HashPassword("123456")
2024-11-07 19:07:41 +00:00
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",
2024-11-17 19:49:42 +07:00
Username: utils.StringPtr("admin"),
2024-11-07 19:07:41 +00:00
Password: testPasswd,
2024-11-17 19:49:42 +07:00
Email: utils.StringPtr("admin@mail.com"),
2024-11-07 19:07:41 +00:00
Role: models.UserRoleAdmin,
},
2024-11-17 19:49:42 +07:00
// {
// Name: "John Doe",
// Username: "user",
// Password: testPasswd,
// Email: "user@mail.com",
// },
// {
// 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-17 19:49:42 +07:00
// teamMembers := []models.TeamMembers{
// {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
2024-11-17 19:49:42 +07:00
// if res := tx.Create(&teamMembers); res.Error != nil {
// return res.Error
// }
2024-11-12 19:15:13 +07:00
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
})
}