Skip to content

Commit 79a87ff

Browse files
committed
add variables_details
1 parent a6c084e commit 79a87ff

File tree

2 files changed

+53
-21
lines changed

2 files changed

+53
-21
lines changed

internal/orchestrator/bricks/bricks.go

Lines changed: 38 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -80,15 +80,20 @@ func (s *Service) AppBrickInstancesList(a *app.ArduinoApp) (AppBrickInstancesRes
8080
if !found {
8181
return AppBrickInstancesResult{}, fmt.Errorf("brick not found with id %s", brickInstance.ID)
8282
}
83+
84+
instanceVariables := getBrickInstanceVariableDetails(brick, brickInstance.Variables)
85+
8386
res.BrickInstances[i] = BrickInstance{
84-
ID: brick.ID,
85-
Name: brick.Name,
86-
Author: "Arduino", // TODO: for now we only support our bricks
87-
Category: brick.Category,
88-
Status: "installed",
89-
ModelID: brickInstance.Model, // TODO: in case is not set by the user, should we return the default model?
90-
Variables: brickInstance.Variables, // TODO: do we want to show also the default value of not explicitly set variables?
87+
ID: brick.ID,
88+
Name: brick.Name,
89+
Author: "Arduino", // TODO: for now we only support our bricks
90+
Category: brick.Category,
91+
Status: "installed",
92+
ModelID: brickInstance.Model, // TODO: in case is not set by the user, should we return the default model?
93+
Variables: brickInstance.Variables, // TODO: do we want to show also the default value of not explicitly set variables?
94+
VariablesDetails: instanceVariables,
9195
}
96+
9297
}
9398
return res, nil
9499
}
@@ -111,21 +116,40 @@ func (s *Service) AppBrickInstanceDetails(a *app.ArduinoApp, brickID string) (Br
111116
// Add/Update the variables with the ones from the app descriptor
112117
maps.Copy(variables, a.Descriptor.Bricks[brickIndex].Variables)
113118

119+
instanceVariables := getBrickInstanceVariableDetails(brick, a.Descriptor.Bricks[brickIndex].Variables)
120+
114121
modelID := a.Descriptor.Bricks[brickIndex].Model
115122
if modelID == "" {
116123
modelID = brick.ModelName
117124
}
118125

119126
return BrickInstance{
120-
ID: brickID,
121-
Name: brick.Name,
122-
Author: "Arduino", // TODO: for now we only support our bricks
123-
Category: brick.Category,
124-
Status: "installed", // For now every Arduino brick are installed
125-
Variables: variables,
126-
ModelID: modelID,
127+
ID: brickID,
128+
Name: brick.Name,
129+
Author: "Arduino", // TODO: for now we only support our bricks
130+
Category: brick.Category,
131+
Status: "installed", // For now every Arduino brick are installed
132+
Variables: variables,
133+
VariablesDetails: instanceVariables,
134+
ModelID: modelID,
127135
}, nil
128136
}
137+
func getBrickInstanceVariableDetails(
138+
brick *bricksindex.Brick,
139+
brickInstanceVariables map[string]string,
140+
) []BrickInstanceVariable {
141+
variableDetails := make([]BrickInstanceVariable, 0, len(brick.Variables))
142+
for _, v := range brick.Variables {
143+
value := brickInstanceVariables[v.Name]
144+
variableDetails = append(variableDetails, BrickInstanceVariable{
145+
Name: v.Name,
146+
Value: value,
147+
Description: v.Description,
148+
Required: v.IsRequired(),
149+
})
150+
}
151+
return variableDetails
152+
}
129153

130154
func (s *Service) BricksDetails(id string, idProvider *app.IDProvider,
131155
cfg config.Configuration) (BrickDetailsResult, error) {

internal/orchestrator/bricks/types.go

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,21 @@ type AppBrickInstancesResult struct {
3434
}
3535

3636
type BrickInstance struct {
37-
ID string `json:"id"`
38-
Name string `json:"name"`
39-
Author string `json:"author"`
40-
Category string `json:"category"`
41-
Status string `json:"status"`
42-
Variables map[string]string `json:"variables,omitempty"`
43-
ModelID string `json:"model,omitempty"`
37+
ID string `json:"id"`
38+
Name string `json:"name"`
39+
Author string `json:"author"`
40+
Category string `json:"category"`
41+
Status string `json:"status"`
42+
Variables map[string]string `json:"variables,omitempty"`
43+
VariablesDetails []BrickInstanceVariable `json:"variables_details,omitempty"`
44+
ModelID string `json:"model,omitempty"`
45+
}
46+
47+
type BrickInstanceVariable struct {
48+
Name string `json:"name"`
49+
Value string `json:"value"`
50+
Description string `json:"description"`
51+
Required bool `json:"required"`
4452
}
4553

4654
type BrickVariable struct {

0 commit comments

Comments
 (0)