feat: user domain & storage mapper
This commit is contained in:
@@ -1,38 +0,0 @@
|
||||
package entity
|
||||
|
||||
import (
|
||||
"backend/pkg/validate/national"
|
||||
"backend/pkg/validate/phone"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type User struct {
|
||||
ID uuid.UUID
|
||||
Name string
|
||||
LastName string
|
||||
PhoneNumber string
|
||||
Email string
|
||||
PubKey string
|
||||
NationalID string
|
||||
BirthDate time.Time // format YYYY-MM-DD in presentation
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
}
|
||||
|
||||
func (u *User) ValidatePhoneNumber(phoneNumber string) error {
|
||||
ok, err := phone.IsValid(phoneNumber)
|
||||
if !ok {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (u *User) ValidateNationalID(ID string) error {
|
||||
ok, err := national.IsValid(ID)
|
||||
if !ok {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package user
|
||||
|
||||
// Repo represents the user repository interface.
|
||||
type Repo interface{}
|
||||
|
||||
// Service represents the user service interface.(UseCases)
|
||||
type Service interface{}
|
||||
@@ -0,0 +1,18 @@
|
||||
package user
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type User struct {
|
||||
ID uuid.UUID
|
||||
Name string
|
||||
LastName string
|
||||
PhoneNumber string
|
||||
NationalID string
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
DeletedAt *time.Time
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package mapper
|
||||
|
||||
import (
|
||||
"backend/internal/domain/user"
|
||||
"backend/internal/repository/storage/types"
|
||||
)
|
||||
|
||||
func UserDomain2Storage(u user.User) *types.User {
|
||||
return &types.User{
|
||||
Base: types.Base{
|
||||
ID: u.ID,
|
||||
CreatedAt: u.CreatedAt,
|
||||
UpdatedAt: u.UpdatedAt,
|
||||
DeletedAt: u.DeletedAt,
|
||||
},
|
||||
Name: u.Name,
|
||||
LastName: u.LastName,
|
||||
Phone: u.PhoneNumber,
|
||||
NationalID: u.NationalID,
|
||||
}
|
||||
}
|
||||
|
||||
func UserStorage2Domain(u types.User) *user.User {
|
||||
return &user.User{
|
||||
ID: u.ID,
|
||||
Name: u.Name,
|
||||
LastName: u.LastName,
|
||||
PhoneNumber: u.Phone,
|
||||
NationalID: u.NationalID,
|
||||
CreatedAt: u.CreatedAt,
|
||||
UpdatedAt: u.UpdatedAt,
|
||||
DeletedAt: u.DeletedAt,
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package types
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type Base struct {
|
||||
ID uuid.UUID
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
DeletedAt *time.Time
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package types
|
||||
|
||||
type User struct {
|
||||
Base
|
||||
Name string
|
||||
LastName string
|
||||
Phone string
|
||||
NationalID string
|
||||
}
|
||||
Reference in New Issue
Block a user