Skip to content

Commit f658b5c

Browse files
committed
okay update
1 parent ecc3d9f commit f658b5c

File tree

3 files changed

+95
-0
lines changed

3 files changed

+95
-0
lines changed

bysService/bysService.go

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package byservice
2+
3+
import "context"
4+
5+
type Byservice struct {
6+
}
7+
// DTO (DATA TRANSFER OBJECT)
8+
type FooReq struct {
9+
Username string
10+
Email string
11+
12+
}
13+
14+
type SignupResp struct{
15+
ID string
16+
}
17+
18+
func (d*bysService) SignUp(ctx context.Context, username , email string ) (*SignupResp, error){
19+
userName, err := user.NewUsername(username)
20+
id err != nil{
21+
return nil, err
22+
}
23+
userEmail, err := user.NewEmail(email)
24+
if err != nil {
25+
return nil, err
26+
}
27+
28+
u := user.New(UserEmail,userName)
29+
30+
// pass to repos
31+
32+
return &SignupResp{
33+
ID: u.ID.String(),
34+
}, nil
35+
}

bysService/main.go

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

domain/user/user.go

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package user
2+
3+
import "errors"
4+
"github.com/google/uuid"
5+
6+
var (
7+
ErrInvalidID=errors.New("invalid id providec")
8+
)
9+
type User struct{
10+
ID ID
11+
username username
12+
email email
13+
}
14+
15+
func New (email Email, username Username) user {
16+
return User{
17+
ID: ID(uuid.Newstring()),
18+
Email: email,
19+
username: username ,
20+
}
21+
}
22+
23+
type ID string
24+
25+
func NewID(id string ) (ID, error) {
26+
//domain logic comes in
27+
_, err := uuid.Parse(i)
28+
if err !-= nil {
29+
return "", errors.Join(err, ErrInvalidID)
30+
}
31+
return ID(i), nil
32+
}
33+
34+
func (i ID) string() string {
35+
return string (i)
36+
}
37+
38+
type Email string
39+
40+
func NewEmail(e string ) (Email,error) {
41+
//domain logic comes in
42+
// validate it is an valid email
43+
return Email(e), nil
44+
}
45+
46+
func (e Email) string() string {
47+
return string(e)
48+
}
49+
50+
type username string
51+
52+
func NewUsername(u string ) (username, error) {
53+
// domain logic comes in
54+
// validate it is an valid email
55+
return username (u), nil
56+
}
57+
func (u Username ) string () string {
58+
return string (u)
59+
}

0 commit comments

Comments
 (0)