-
Notifications
You must be signed in to change notification settings - Fork 0
/
gift-card.go
126 lines (119 loc) · 2.88 KB
/
gift-card.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package store
import (
"github.com/driver005/gateway/sql"
"github.com/gofiber/fiber/v3"
)
type GiftCard struct {
r Registry
}
func NewGiftCard(r Registry) *GiftCard {
m := GiftCard{r: r}
return &m
}
func (m *GiftCard) SetRoutes(router fiber.Router) {
route := router.Group("/gift-cards")
route.Get("/:code", m.Get)
}
// @oas:path [get] /store/gift-cards/{code}
// operationId: "GetGiftCardsCode"
// summary: "Get Gift Card by Code"
// description: "Retrieve a Gift Card's details by its associated unique code."
// parameters:
// - (path) code=* {string} The unique Gift Card code.
//
// x-codegen:
//
// method: retrieve
//
// x-codeSamples:
//
// - lang: JavaScript
// label: JS Client
// source: |
// import Medusa from "@medusajs/medusa-js"
// const medusa = new Medusa({ baseUrl: MEDUSA_BACKEND_URL, maxRetries: 3 })
// medusa.giftCards.retrieve(code)
// .then(({ gift_card }) => {
// console.log(gift_card.id);
// })
//
// - lang: tsx
// label: Medusa React
// source: |
// import React from "react"
// import { useGiftCard } from "medusa-react"
//
// type Props = {
// giftCardCode: string
// }
//
// const GiftCard = ({ giftCardCode }: Props) => {
// const { gift_card, isLoading, isError } = useGiftCard(
// giftCardCode
// )
//
// return (
// <div>
// {isLoading && <span>Loading...</span>}
// {gift_card && <span>{gift_card.value}</span>}
// {isError && <span>Gift Card does not exist</span>}
// </div>
// )
// }
//
// export default GiftCard
//
// - lang: Shell
// label: cURL
// source: |
// curl '{backend_url}/store/gift-cards/{code}'
//
// tags:
// - Gift Cards
//
// responses:
//
// 200:
// description: OK
// content:
// application/json:
// schema:
// $ref: "#/components/schemas/StoreGiftCardsRes"
// "400":
// description: "Bad Request"
// content:
// application/json:
// schema:
// $ref: "#/components/responses/400_error"
// "404":
// description: "Not Found"
// content:
// application/json:
// schema:
// $ref: "#/components/responses/not_found_error"
// "409":
// description: "Invalid State"
// content:
// application/json:
// schema:
// $ref: "#/components/responses/invalid_state_error"
// "422":
// description: "Invalid Request"
// content:
// application/json:
// schema:
// $ref: "#/components/responses/invalid_request_error"
// "500":
// description: "Internal Server"
// content:
// application/json:
// schema:
// $ref: "#/components/responses/500_error"
func (m *GiftCard) Get(context fiber.Ctx) error {
code := context.Params("code")
result, err := m.r.GiftCardService().SetContext(context.Context()).RetrieveByCode(code, &sql.Options{})
if err != nil {
return err
}
return context.Status(fiber.StatusOK).JSON(result)
}