feat: team draft

This commit is contained in:
2024-11-12 19:15:13 +07:00
parent 8159b65605
commit f5250d5361
23 changed files with 313 additions and 48 deletions
+1
View File
@@ -45,6 +45,7 @@ func Init() {
// Migrate the schema
db.AutoMigrate(Models...)
InitModels(db)
runSeeders(db)
}
+14 -1
View File
@@ -1,10 +1,23 @@
package db
import "rul.sh/vaulterm/models"
import (
"log"
"gorm.io/gorm"
"rul.sh/vaulterm/models"
)
var Models = []interface{}{
&models.User{},
&models.UserSession{},
&models.Keychain{},
&models.Host{},
&models.Team{},
&models.TeamMembers{},
}
func InitModels(db *gorm.DB) {
if err := db.SetupJoinTable(&models.Team{}, "Members", &models.TeamMembers{}); err != nil {
log.Fatal(err)
}
}
+30 -2
View File
@@ -28,7 +28,18 @@ func seedUsers(tx *gorm.DB) error {
return err
}
userList := []models.User{
teams := []*models.Team{
{
Name: "My Team",
Icon: "☘️",
},
}
if res := tx.Create(&teams); res.Error != nil {
return res.Error
}
userList := []*models.User{
{
Name: "Admin",
Username: "admin",
@@ -42,22 +53,39 @@ func seedUsers(tx *gorm.DB) error {
Password: testPasswd,
Email: "[email protected]",
},
{
Name: "Mary Doe",
Username: "user2",
Password: testPasswd,
Email: "[email protected]",
},
}
if res := tx.Create(&userList); res.Error != nil {
return res.Error
}
teamMembers := []models.TeamMembers{
{TeamID: teams[0].ID, UserID: userList[0].ID, Role: "owner"},
{TeamID: teams[0].ID, UserID: userList[1].ID, Role: "admin"},
{TeamID: teams[0].ID, UserID: userList[2].ID, Role: "user"},
}
if res := tx.Create(&teamMembers); res.Error != nil {
return res.Error
}
return nil
}
func runSeeders(db *gorm.DB) {
db.Transaction(func(tx *gorm.DB) error {
for _, seed := range seeders {
if err := seed(db); err != nil {
if err := seed(tx); err != nil {
return err
}
}
return nil
})
}