feat: use uuid instead of unit type ids

This commit is contained in:
Lakhan Samani
2021-10-03 21:33:55 +05:30
parent 4c2c91a2bd
commit 173a55137f
4 changed files with 43 additions and 10 deletions

View File

@@ -4,11 +4,13 @@ import (
"log"
"time"
"github.com/google/uuid"
"gorm.io/gorm"
"gorm.io/gorm/clause"
)
type User struct {
ID uint `gorm:"primaryKey"`
ID uuid.UUID `gorm:"type:uuid;"`
FirstName string
LastName string
Email string `gorm:"unique"`
@@ -21,6 +23,12 @@ type User struct {
Roles string
}
func (u *User) BeforeCreate(tx *gorm.DB) (err error) {
u.ID = uuid.New()
return
}
// SaveUser function to add user even with email conflict
func (mgr *manager) SaveUser(user User) (User, error) {
result := mgr.db.Clauses(
@@ -42,7 +50,7 @@ func (mgr *manager) UpdateUser(user User) (User, error) {
result := mgr.db.Clauses(
clause.OnConflict{
UpdateAll: true,
Columns: []clause.Column{{Name: "id"}},
Columns: []clause.Column{{Name: "email"}},
}).Create(&user)
if result.Error != nil {
@@ -85,7 +93,7 @@ func (mgr *manager) GetUserByID(id string) (User, error) {
return user, nil
}
func (mgr *manager) UpdateVerificationTime(verifiedAt int64, id uint) error {
func (mgr *manager) UpdateVerificationTime(verifiedAt int64, id uuid.UUID) error {
user := &User{
ID: id,
}