-
Notifications
You must be signed in to change notification settings - Fork 0
/
CreateAddress.go
49 lines (46 loc) · 1.08 KB
/
CreateAddress.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
package addresses
import (
"context"
"github.com/FranciscoMendes10866/listry/api/db"
"github.com/form3tech-oss/jwt-go"
"github.com/gofiber/fiber/v2"
)
// CreateAddress ...
func CreateAddress(c *fiber.Ctx) error {
// Prisma Client
prisma := db.NewClient()
err := prisma.Connect()
if err != nil {
return err
}
defer func() {
err := prisma.Disconnect()
if err != nil {
panic(err)
}
}()
ctx := context.Background()
// User Input
body := new(Addresses)
c.BodyParser(body)
// token payload
user := c.Locals("user").(*jwt.Token)
claims := user.Claims.(jwt.MapClaims)
tokenID := claims["id"].(string)
// adds the user_id to the object
body.UserID = tokenID
// creates a new address
created, err := prisma.Addresses.CreateOne(
db.Addresses.Name.Set(body.Name),
db.Addresses.Street.Set(body.Street),
db.Addresses.Zip.Set(body.Zip),
db.Addresses.City.Set(body.City),
db.Addresses.Country.Set(body.Country),
db.Addresses.UserID.Set(tokenID),
).Exec(ctx)
if err != nil {
return c.SendStatus(fiber.StatusInternalServerError)
}
// Response
return c.JSON(created)
}