/
user_sqlite_verification_token_view.go
53 lines (42 loc) · 1.46 KB
/
user_sqlite_verification_token_view.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package repository
import (
"context"
"github.com/google/uuid"
ua "github.com/wizact/go-todo-api/internal/user/domain/aggregates"
"gorm.io/gorm"
)
type SqliteUserTokenView struct {
UserID string `gorm:"primaryKey;not null"`
VerificationToken string
VerificationSalt string
CreatedAt int64 `gorm:"autoCreateTime:milli"`
UpdatedAt int64 `gorm:"autoUpdateTime:milli"`
DeletedAt gorm.DeletedAt `gorm:"index"`
}
// TableName overrides grom default table name
func (SqliteUserTokenView) TableName() string {
return "users_token_view"
}
func (r *UserSqliteRepository) createOrUpdateUserTokenView(ctx context.Context, tx *gorm.DB, user ua.User) (ua.UserTokenView, error) {
emptyUserTokenView := ua.UserTokenView{}
utv := &SqliteUserTokenView{}
utv.FromDomainEntityToDbModel(user)
result := tx.
Where(SqliteUserTokenView{UserID: user.UserId().String()}).
Assign(*utv).
FirstOrCreate(&utv)
if result.Error != nil {
return emptyUserTokenView, result.Error
}
return utv.FromDbModelToDomainEntity(), nil
}
func (dbm *SqliteUserTokenView) FromDomainEntityToDbModel(de ua.User) {
det := de.Token()
dbm.UserID = de.UserId().String()
dbm.VerificationToken = det.VerificationToken()
dbm.VerificationSalt = det.VerificationSalt()
}
func (dbm SqliteUserTokenView) FromDbModelToDomainEntity() ua.UserTokenView {
de := ua.NewUserTokenView(uuid.MustParse(dbm.UserID), dbm.VerificationToken, dbm.VerificationSalt)
return de
}