@@ -4,10 +4,13 @@ import (
4
4
"fmt"
5
5
6
6
"github.com/jgmc3012/bookstore_users-api/datasources/mysql/users_db"
7
- "github.com/jgmc3012/bookstore_users-api/utils/date_utils"
8
7
"github.com/jgmc3012/bookstore_users-api/utils/errors"
9
8
)
10
9
10
+ const (
11
+ queryInsertUser = "INSERT INTO users(first_name, last_name, email, date_created) VALUES(?, ?, ?, ?);"
12
+ )
13
+
11
14
var (
12
15
usersDB = make (map [int64 ]* User )
13
16
)
@@ -24,16 +27,28 @@ func Get(userId int64) (*User, *errors.RestErr) {
24
27
}
25
28
26
29
func (user * User ) Save () * errors.RestErr {
27
- current_user := usersDB [user .Id ]
28
- if current_user != nil {
29
- if current_user .Email == user .Email {
30
- return errors .NewBadRequestError (fmt .Sprintf ("email %s already registered" , user .Email ))
31
- }
32
- return errors .NewBadRequestError (fmt .Sprintf ("user %d already exists" , user .Id ))
30
+ stmt , err := users_db .Client .Prepare (queryInsertUser )
31
+ if err != nil {
32
+ return errors .NewInternalServerError (err .Error ())
33
+ }
34
+ defer stmt .Close ()
35
+
36
+ insertResult , err := stmt .Exec (user .FirstName , user .LastName , user .Email , user .DateCreated )
37
+ if err != nil {
38
+ return errors .NewInternalServerError (
39
+ fmt .Sprintf ("error when trying to save user: %s" , err .Error ()),
40
+ )
33
41
}
34
42
35
- user .DateCreated = date_utils .GetNowString ()
43
+ // insertResult, err := users_db.Client.Exec(queryInsertUser, user.FirstName, user.LastName, user.Email, user.DateCreated) // lost performance
44
+
45
+ userId , err := insertResult .LastInsertId ()
46
+ if err != nil {
47
+ return errors .NewInternalServerError (
48
+ fmt .Sprintf ("error when trying to save user: %s" , err .Error ()),
49
+ )
50
+ }
36
51
37
- usersDB [ user .Id ] = user
52
+ user .Id = userId
38
53
return nil
39
54
}
0 commit comments