Files
netmaker/migrate/migrate_v1_5_2.go
T
VishalDalwadi 5bac8e1b07 feat(go): add schema for user invites table;
1. Schema Definition for User Invites table.
2. Use the newer table everywhere.
3. Migration code for User Invites table;
2026-04-13 10:52:57 +05:30

86 lines
2.0 KiB
Go

package migrate
import (
"context"
"encoding/json"
"fmt"
"github.com/gravitl/netmaker/database"
"github.com/gravitl/netmaker/logger"
"github.com/gravitl/netmaker/models"
"github.com/gravitl/netmaker/schema"
"gorm.io/datatypes"
)
func migrateV1_5_2(ctx context.Context) error {
err := migratePendingUsers(ctx)
if err != nil {
return err
}
return migrateUserInvites(ctx)
}
func migratePendingUsers(ctx context.Context) error {
records, err := database.FetchRecords(database.PENDING_USERS_TABLE_NAME)
if err != nil && !database.IsEmptyRecord(err) {
return err
}
for _, record := range records {
var pendingUser models.User
err = json.Unmarshal([]byte(record), &pendingUser)
if err != nil {
return err
}
_pendingUser := &schema.PendingUser{
Username: pendingUser.UserName,
ExternalIdentityProviderID: pendingUser.ExternalIdentityProviderID,
}
logger.Log(4, fmt.Sprintf("migrating pending user %s", _pendingUser.Username))
err = _pendingUser.Create(ctx)
if err != nil {
logger.Log(4, fmt.Sprintf("migrating pending user %s failed: %v", _pendingUser.Username, err))
return err
}
}
return nil
}
func migrateUserInvites(ctx context.Context) error {
records, err := database.FetchRecords(database.USER_INVITES_TABLE_NAME)
if err != nil && !database.IsEmptyRecord(err) {
return err
}
for _, record := range records {
var userInvite models.UserInvite
err = json.Unmarshal([]byte(record), &userInvite)
if err != nil {
return err
}
_userInvite := &schema.UserInvite{
InviteCode: userInvite.InviteCode,
InviteURL: userInvite.InviteURL,
Email: userInvite.Email,
PlatformRoleID: userInvite.PlatformRoleID,
UserGroups: datatypes.NewJSONType(userInvite.UserGroups),
}
logger.Log(4, fmt.Sprintf("migrating user invite %s", _userInvite.InviteCode))
err = _userInvite.Create(ctx)
if err != nil {
logger.Log(4, fmt.Sprintf("migrating user invite (%s/%s) failed: %v", _userInvite.InviteCode, _userInvite.Email, err))
return err
}
}
return nil
}