Skip to content

Commit af8c59c

Browse files
authored
Merge pull request #33 from threefoldtech/development-add-stellar-address-to-farms
add stellar address to farms
2 parents 03889e0 + ab7ed60 commit af8c59c

File tree

6 files changed

+48
-26
lines changed

6 files changed

+48
-26
lines changed

node-registrar/docs/docs.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -914,6 +914,9 @@ const docTemplate = `{
914914
"$ref": "#/definitions/db.Node"
915915
}
916916
},
917+
"stellar_address": {
918+
"type": "string"
919+
},
917920
"twin_id": {
918921
"description": "Farmer account reference",
919922
"type": "integer"
@@ -1130,14 +1133,14 @@ const docTemplate = `{
11301133
},
11311134
"server.UpdateFarmRequest": {
11321135
"type": "object",
1133-
"required": [
1134-
"farm_name"
1135-
],
11361136
"properties": {
11371137
"farm_name": {
11381138
"type": "string",
1139-
"maxLength": 40,
1140-
"minLength": 1
1139+
"maxLength": 40
1140+
},
1141+
"stellar_address": {
1142+
"type": "string",
1143+
"maxLength": 56
11411144
}
11421145
}
11431146
},

node-registrar/docs/swagger.json

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -903,6 +903,9 @@
903903
"$ref": "#/definitions/db.Node"
904904
}
905905
},
906+
"stellar_address": {
907+
"type": "string"
908+
},
906909
"twin_id": {
907910
"description": "Farmer account reference",
908911
"type": "integer"
@@ -1119,14 +1122,14 @@
11191122
},
11201123
"server.UpdateFarmRequest": {
11211124
"type": "object",
1122-
"required": [
1123-
"farm_name"
1124-
],
11251125
"properties": {
11261126
"farm_name": {
11271127
"type": "string",
1128-
"maxLength": 40,
1129-
"minLength": 1
1128+
"maxLength": 40
1129+
},
1130+
"stellar_address": {
1131+
"type": "string",
1132+
"maxLength": 56
11301133
}
11311134
}
11321135
},

node-registrar/docs/swagger.yaml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ definitions:
4343
items:
4444
$ref: '#/definitions/db.Node'
4545
type: array
46+
stellar_address:
47+
type: string
4648
twin_id:
4749
description: Farmer account reference
4850
type: integer
@@ -194,10 +196,10 @@ definitions:
194196
properties:
195197
farm_name:
196198
maxLength: 40
197-
minLength: 1
198199
type: string
199-
required:
200-
- farm_name
200+
stellar_address:
201+
maxLength: 56
202+
type: string
201203
type: object
202204
server.UpdateNodeRequest:
203205
properties:

node-registrar/pkg/db/farms.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,17 @@ func (db *Database) CreateFarm(farm Farm) (uint64, error) {
4949
return farm.FarmID, nil
5050
}
5151

52-
func (db *Database) UpdateFarm(farmID uint64, name string) (err error) {
53-
result := db.gormDB.Model(&Farm{}).Where("farm_id = ?", farmID).Updates(map[string]interface{}{
54-
"farm_name": name,
55-
})
52+
func (db *Database) UpdateFarm(farmID uint64, name string, stellarAddr string) (err error) {
53+
update := map[string]interface{}{}
54+
55+
if len(name) != 0 {
56+
update["farm_name"] = name
57+
}
58+
if len(stellarAddr) != 0 {
59+
update["stellar_address"] = stellarAddr
60+
}
61+
62+
result := db.gormDB.Model(&Farm{}).Where("farm_id = ?", farmID).Updates(update)
5663
if result.Error != nil {
5764
return result.Error
5865
}

node-registrar/pkg/db/models.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,13 @@ type Account struct {
2121
}
2222

2323
type Farm struct {
24-
FarmID uint64 `gorm:"primaryKey;autoIncrement" json:"farm_id"`
25-
FarmName string `gorm:"size:40;not null;unique;check:farm_name <> ''" json:"farm_name"`
26-
TwinID uint64 `json:"twin_id" gorm:"not null;check:twin_id > 0"` // Farmer account reference
27-
Dedicated bool `json:"dedicated"`
28-
CreatedAt time.Time `json:"created_at"`
29-
UpdatedAt time.Time `json:"updated_at"`
24+
FarmID uint64 `gorm:"primaryKey;autoIncrement" json:"farm_id"`
25+
FarmName string `gorm:"size:40;not null;unique;check:farm_name <> ''" json:"farm_name" binding:"alphanum,required"`
26+
TwinID uint64 `json:"twin_id" gorm:"not null;check:twin_id > 0"` // Farmer account reference
27+
StellarAddress string `json:"stellar_address" binding:"max=56,startswith=G,len=56,alphanum,uppercase"`
28+
Dedicated bool `json:"dedicated"`
29+
CreatedAt time.Time `json:"created_at"`
30+
UpdatedAt time.Time `json:"updated_at"`
3031
// @swagger:ignore
3132
Nodes []Node `gorm:"foreignKey:FarmID;references:FarmID;constraint:OnDelete:RESTRICT" json:"nodes"`
3233
}

node-registrar/pkg/server/handlers.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"fmt"
77
"net/http"
88
"strconv"
9+
"strings"
910
"time"
1011

1112
"github.com/gin-gonic/gin"
@@ -130,7 +131,8 @@ func (s Server) createFarmHandler(c *gin.Context) {
130131
}
131132

132133
type UpdateFarmRequest struct {
133-
FarmName string `json:"farm_name" binding:"required,min=1,max=40"`
134+
FarmName string `json:"farm_name" binding:"max=40"`
135+
StellarAddress string `json:"stellar_address" binding:"max=56,startswith=G,len=56,alphanum,uppercase"`
134136
}
135137

136138
// @Summary Update farm
@@ -176,9 +178,13 @@ func (s Server) updateFarmsHandler(c *gin.Context) {
176178
return
177179
}
178180

181+
req.FarmName = strings.TrimSpace(req.FarmName)
182+
req.StellarAddress = strings.TrimSpace(req.StellarAddress)
183+
179184
// No need to hit DB if new farm name is same as the old one
180-
if existingFarm.FarmName != req.FarmName {
181-
err = s.db.UpdateFarm(id, req.FarmName)
185+
if (len(req.FarmName) != 0 && existingFarm.FarmName != req.FarmName) ||
186+
(len(req.StellarAddress) != 0 && existingFarm.StellarAddress != req.StellarAddress) {
187+
err = s.db.UpdateFarm(id, req.FarmName, req.StellarAddress)
182188
if err != nil {
183189
status := http.StatusBadRequest
184190

0 commit comments

Comments
 (0)