feat: user domain & storage mapper

This commit is contained in:
2025-09-06 12:02:05 +03:30
parent 0e32d0d820
commit 9bade56794
17 changed files with 83 additions and 74 deletions
View File
-38
View File
@@ -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
}
+7
View File
@@ -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{}
+18
View File
@@ -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
}
View File
@@ -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,
}
}
+14
View File
@@ -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
}