@@ -2,6 +2,7 @@ package server
2
2
3
3
import (
4
4
"encoding/base64"
5
+ "encoding/json"
5
6
"errors"
6
7
"fmt"
7
8
"net/http"
@@ -20,14 +21,6 @@ const (
20
21
OnlineCutoffTime = 40 * time .Minute
21
22
)
22
23
23
- type Farm struct {
24
- FarmID uint64 `json:"farm_id"`
25
- FarmName string `json:"farm_name"`
26
- TwinID uint64 `json:"twin_id"`
27
- Dedicated bool `json:"dedicated"`
28
- StellarAddress string `json:"stellar_address"`
29
- }
30
-
31
24
// @title Node Registrar API
32
25
// @version 1.0
33
26
// @description API for managing TFGrid node registration
@@ -43,7 +36,7 @@ type Farm struct {
43
36
// @Param twin_id query int false "Filter by twin ID"
44
37
// @Param page query int false "Page number" default(1)
45
38
// @Param size query int false "Results per page" default(10)
46
- // @Success 200 {object} []Farm "List of farms"
39
+ // @Success 200 {object} []map[string]any "List of farms"]
47
40
// @Failure 400 {object} map[string]any "Bad request"
48
41
// @Router /farms [get]
49
42
func (s Server ) listFarmsHandler (c * gin.Context ) {
@@ -63,15 +56,15 @@ func (s Server) listFarmsHandler(c *gin.Context) {
63
56
}
64
57
65
58
// dorp extra db field
66
- var res []Farm
59
+ var res []map [ string ] any
67
60
for _ , farm := range farms {
68
- res = append ( res , Farm {
69
- FarmID : farm . FarmID ,
70
- FarmName : farm . FarmName ,
71
- TwinID : farm . TwinID ,
72
- Dedicated : farm . Dedicated ,
73
- StellarAddress : farm . StellarAddress ,
74
- } )
61
+ data , err := toMap ( farm )
62
+ if err != nil {
63
+ c . JSON ( http . StatusInternalServerError , gin. H { "error" : err . Error ()})
64
+ return
65
+ }
66
+ delete ( data , "nodes" )
67
+ res = append ( res , data )
75
68
}
76
69
77
70
c .JSON (http .StatusOK , res )
@@ -83,7 +76,7 @@ func (s Server) listFarmsHandler(c *gin.Context) {
83
76
// @Accept json
84
77
// @Produce json
85
78
// @Param farm_id path int true "Farm ID"
86
- // @Success 200 {object} Farm "Farm details"
79
+ // @Success 200 {object} db. Farm "Farm details"
87
80
// @Failure 400 {object} map[string]any "Invalid farm ID"
88
81
// @Failure 404 {object} map[string]any "Farm not found"
89
82
// @Router /farms/{farm_id} [get]
@@ -109,13 +102,12 @@ func (s Server) getFarmHandler(c *gin.Context) {
109
102
}
110
103
111
104
// dorp extra db field
112
- res := Farm {
113
- FarmID : farm .FarmID ,
114
- FarmName : farm .FarmName ,
115
- TwinID : farm .TwinID ,
116
- Dedicated : farm .Dedicated ,
117
- StellarAddress : farm .StellarAddress ,
105
+ res , err := toMap (farm )
106
+ if err != nil {
107
+ c .JSON (http .StatusInternalServerError , gin.H {"error" : err .Error ()})
108
+ return
118
109
}
110
+ delete (res , "nodes" )
119
111
120
112
c .JSON (http .StatusOK , res )
121
113
}
@@ -923,3 +915,16 @@ func validateTimestampHint(timestampHint int64) error {
923
915
924
916
return nil
925
917
}
918
+
919
+ func toMap (val any ) (map [string ]any , error ) {
920
+ bytes , err := json .Marshal (val )
921
+ if err != nil {
922
+ return nil , err
923
+ }
924
+ data := map [string ]any {}
925
+ err = json .Unmarshal (bytes , & data )
926
+ if err != nil {
927
+ return nil , err
928
+ }
929
+ return data , nil
930
+ }
0 commit comments