@@ -13,16 +13,27 @@ import (
1313 "gorm.io/gorm"
1414)
1515
16+ // CreateTransaction creates a new transaction.
17+ //
18+ // @Summary Create a new transaction
19+ // @Description Create a new transaction
20+ // @Tags Transactions
21+ // @Accept json
22+ // @Produce json
23+ // @Router /transactions [post]
24+ // @Param transaction body models.CreateTransactionSchema true "Transaction"
25+ // @Success 200 {object} models.JSONDataResult{data=[]database.Transaction}
26+ // @Failure 500 {object} models.JSONCodeResult{}
27+ // @Failure 502 {object} models.JSONCodeResult{}
1628func CreateTransaction (c * fiber.Ctx ) error {
1729 var payload * models.CreateTransactionSchema
1830 if err := c .BodyParser (& payload ); err != nil {
19- return c .Status (fiber .StatusBadRequest ).JSON (fiber.Map {"status" : "fail" , "message" : err .Error ()})
31+ return c .Status (fiber .StatusBadRequest ).JSON (fiber.Map {"code" : 500 , " status" : "fail" , "message" : err .Error ()})
2032 }
2133
2234 errors := models .ValidateStruct (payload )
2335 if errors != nil {
2436 return c .Status (fiber .StatusBadRequest ).JSON (errors )
25-
2637 }
2738
2839 now := time .Now ()
@@ -41,18 +52,32 @@ func CreateTransaction(c *fiber.Ctx) error {
4152 result := initializers .DB .Create (& newTransaction )
4253
4354 if result .Error != nil {
44- return c .Status (fiber .StatusBadGateway ).JSON (fiber.Map {"status" : "error" , "message" : result .Error .Error ()})
55+ return c .Status (fiber .StatusBadGateway ).JSON (fiber.Map {"code" : 500 , " status" : "error" , "message" : result .Error .Error ()})
4556 }
4657
47- return c .Status (fiber .StatusCreated ).JSON (fiber.Map {"status" : "success" , "data" : fiber. Map { "transaction " : newTransaction } })
58+ return c .Status (fiber .StatusCreated ).JSON (fiber.Map {"code" : 200 , " status" : "success" , "data" : newTransaction , "message " : "Transaction created successfully" })
4859}
4960
61+ // UpdateTransaction updates a transaction by ID.
62+ //
63+ // @Summary Update a transaction by ID
64+ // @Description Update a transaction by its unique ID
65+ // @Tags Transactions
66+ // @Accept json
67+ // @Produce json
68+ // @Router /transactions/{transactionsId} [put]
69+ // @Param transactionsId path int true "Transaction ID"
70+ // @Param transaction body models.UpdateTransactionSchema true "Transaction"
71+ // @Success 200 {object} models.JSONDataResult{data=[]models.UpdateTransactionSchema}
72+ // @Failure 500 {object} models.JSONCodeResult{}
73+ // @Failure 502 {object} models.JSONCodeResult{}
74+ // @Failure 404 {object} models.JSONCodeResult{}
5075func UpdateTransaction (c * fiber.Ctx ) error {
5176 idStr := c .Params ("transactionsId" )
5277
5378 var payload models.UpdateTransactionSchema
5479 if err := c .BodyParser (& payload ); err != nil {
55- return c .Status (fiber .StatusBadRequest ).JSON (fiber.Map {"status" : "fail" , "message" : "Error parsing body: " + err .Error ()})
80+ return c .Status (fiber .StatusBadRequest ).JSON (fiber.Map {"code" : 500 , " status" : "fail" , "message" : "Error parsing body: " + err .Error ()})
5681 }
5782
5883 errors := models .ValidateStruct (payload )
@@ -65,9 +90,9 @@ func UpdateTransaction(c *fiber.Ctx) error {
6590
6691 if result .Error != nil {
6792 if result .Error == gorm .ErrRecordNotFound {
68- return c .Status (fiber .StatusNotFound ).JSON (fiber.Map {"status" : "fail" , "message" : "No note with that Id exists" })
93+ return c .Status (fiber .StatusNotFound ).JSON (fiber.Map {"code" : 404 , " status" : "fail" , "message" : "No note with that Id exists" })
6994 }
70- return c .Status (fiber .StatusInternalServerError ).JSON (fiber.Map {"status" : "fail" , "message" : "Error fetching transaction:" + result .Error .Error ()})
95+ return c .Status (fiber .StatusInternalServerError ).JSON (fiber.Map {"code" : 500 , " status" : "fail" , "message" : "Error fetching transaction:" + result .Error .Error ()})
7196 }
7297
7398 transaction .Title = payload .Title
@@ -78,46 +103,67 @@ func UpdateTransaction(c *fiber.Ctx) error {
78103 transaction .ToUser = payload .ToUser
79104
80105 if err := initializers .DB .Save (& transaction ).Error ; err != nil {
81- return c .Status (fiber .StatusInternalServerError ).JSON (fiber.Map {"status" : "fail" , "message" : "Failed to update transaction: " + err .Error ()})
106+ return c .Status (fiber .StatusInternalServerError ).JSON (fiber.Map {"code" : 500 , " status" : "fail" , "message" : "Failed to update transaction: " + err .Error ()})
82107 }
83108
84- return c .Status (fiber .StatusOK ).JSON (fiber.Map {"status" : "success" , "data" : transaction })
109+ return c .Status (fiber .StatusOK ).JSON (fiber.Map {"code" : 200 , " status" : "success" , "message" : "Transaction updated successfully " , "data" : transaction })
85110}
86111
112+ // FindTransactionById finds a transaction by ID.
113+ //
114+ // @Summary Find a transaction by ID
115+ // @Description Find a transaction by its unique ID
116+ // @Tags Transactions
117+ // @Accept json
118+ // @Produce json
119+ // @Router /transactions/{transactionsId} [get]
120+ // @Param transactionsId path int true "Transaction ID"
121+ // @Success 200 {object} models.JSONDataResult{data=[]database.Transaction}
122+ // @Failure 500 {object} models.JSONCodeResult{}
123+ // @Failure 404 {object} models.JSONCodeResult{}
87124func FindTransactionById (c * fiber.Ctx ) error {
88125 idStr := c .Params ("transactionsId" )
89126
90127 id , err := strconv .ParseUint (idStr , 10 , 64 )
91128
92129 if err != nil {
93- return c .Status (fiber .StatusBadRequest ).JSON (fiber.Map {
94- "message" : "Invalid ID" ,
95- })
130+ return c .Status (fiber .StatusBadRequest ).JSON (fiber.Map {"code" : 500 , "status" : "fail" , "message" : "Invalid ID" })
96131 }
97132
98133 var transaction database.Transaction
99- transaction .ID = uint (id )
100- initializers .DB .First (& transaction )
134+ result := initializers .DB .First (& transaction , id )
101135
102- return c .Status (fiber .StatusOK ).JSON (fiber.Map {"status" : "success" , "data" : transaction })
136+ if result .RowsAffected == 0 {
137+ return c .Status (fiber .StatusNotFound ).JSON (fiber.Map {"code" : 404 , "status" : "fail" , "message" : "Transaction not found" })
138+ }
139+
140+ return c .Status (fiber .StatusOK ).JSON (fiber.Map {"code" : 200 , "status" : "success" , "message" : "Transaction found" , "data" : transaction })
103141}
104142
143+ // ListTransactions lists transactions with pagination.
144+ //
145+ // @Summary List transactions with pagination
146+ // @Description List transactions with pagination
147+ // @Tags Transactions
148+ // @Accept json
149+ // @Produce json
150+ // @Router /transactions [get]
151+ // @Param page query int false "Page number"
152+ // @Param limit query int false "Number of items per page"
153+ // @Success 200 {object} models.JSONDataResultWithPagination{data=[]database.Transaction}
154+ // @Failure 500 {object} models.JSONCodeResult{}
105155func ListTransactions (c * fiber.Ctx ) error {
106156 var page = c .Query ("page" , "1" )
107157 var limit = c .Query ("limit" , "10" )
108158
109159 intPage , err := strconv .Atoi (page )
110160 if err != nil {
111- return c .Status (fiber .StatusBadRequest ).JSON (fiber.Map {
112- "message" : "Invalid page value" ,
113- })
161+ return c .Status (fiber .StatusBadRequest ).JSON (fiber.Map {"code" : 500 , "status" : "fail" , "message" : "Invalid page value" })
114162 }
115163
116164 intLimit , err := strconv .Atoi (limit )
117165 if err != nil {
118- return c .Status (fiber .StatusBadRequest ).JSON (fiber.Map {
119- "message" : "Invalid limit value" ,
120- })
166+ return c .Status (fiber .StatusBadRequest ).JSON (fiber.Map {"code" : 500 , "status" : "fail" , "message" : "Invalid limit value" })
121167 }
122168
123169 offset := (intPage - 1 ) * intLimit
@@ -129,6 +175,7 @@ func ListTransactions(c *fiber.Ctx) error {
129175 initializers .DB .Model (& database.Transaction {}).Count (& count )
130176
131177 return c .Status (fiber .StatusOK ).JSON (fiber.Map {
178+ "code" : 200 ,
132179 "status" : "success" ,
133180 "data" : transactions ,
134181 "offset" : offset ,
@@ -137,26 +184,36 @@ func ListTransactions(c *fiber.Ctx) error {
137184 })
138185}
139186
187+ // DeleteTransaction deletes a transaction by ID godoc
188+ //
189+ // @Summary Delete a transaction by ID
190+ // @Description Delete a transaction by its unique ID
191+ // @Tags Transactions
192+ // @Accept json
193+ // @Produce json
194+ // @Router /transactions/:transactionsId [delete]
195+ // @Param id path int true "transaction ID"
196+ // @Success 200 {object} models.JSONCodeResult{}
197+ // @Failure 404 {object} models.JSONCodeResult{}
198+ // @Failure 500 {object} models.JSONCodeResult{}
140199func DeleteTransaction (c * fiber.Ctx ) error {
141200 idStr := c .Params ("transactionsId" )
142201
143202 id , err := strconv .ParseUint (idStr , 10 , 64 )
144203 if err != nil {
145204 return c .Status (fiber .StatusBadRequest ).JSON (fiber.Map {
146- "message" : "Invalid ID" ,
205+ "code" : 404 ,
206+ "status" : "fail" ,
207+ "message" : "No note with that Id exists" ,
147208 })
148209 }
149210
150211 var transaction database.Transaction
151212 transaction .ID = uint (id )
152213 result := initializers .DB .Delete (& transaction )
153214 if result .Error != nil {
154- return c .Status (fiber .StatusInternalServerError ).JSON (fiber.Map {
155- "message" : "Failed to delete transaction" ,
156- })
215+ return c .Status (fiber .StatusInternalServerError ).JSON (fiber.Map {"code" : 500 , "status" : "fail" , "message" : "Failed to delete transaction" })
157216 }
158217
159- return c .Status (fiber .StatusOK ).JSON (fiber.Map {
160- "message" : "Transaction successfully deleted" ,
161- })
218+ return c .Status (fiber .StatusOK ).JSON (fiber.Map {"code" : 200 , "status" : "success" , "message" : "Transaction successfully deleted" })
162219}
0 commit comments