Skip to content

Commit b4b1d92

Browse files
committed
Unify BrickInstance types and add getSelectedModelOrDefault helper
1 parent 46e4f4c commit b4b1d92

File tree

2 files changed

+24
-22
lines changed

2 files changed

+24
-22
lines changed

internal/orchestrator/bricks/bricks.go

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ func (s *Service) List() (BrickListResult, error) {
7171
}
7272

7373
func (s *Service) AppBrickInstancesList(a *app.ArduinoApp) (AppBrickInstancesResult, error) {
74-
res := AppBrickInstancesResult{BrickInstances: make([]BrickInstanceListItem, len(a.Descriptor.Bricks))}
74+
res := AppBrickInstancesResult{BrickInstances: make([]BrickInstance, len(a.Descriptor.Bricks))}
7575
for i, brickInstance := range a.Descriptor.Bricks {
7676
brick, found := s.bricksIndex.FindBrickByID(brickInstance.ID)
7777
if !found {
@@ -80,16 +80,23 @@ func (s *Service) AppBrickInstancesList(a *app.ArduinoApp) (AppBrickInstancesRes
8080

8181
variablesMap, configVariables := getInstanceBrickConfigVariableDetails(brick, brickInstance.Variables)
8282

83-
res.BrickInstances[i] = BrickInstanceListItem{
83+
res.BrickInstances[i] = BrickInstance{
8484
ID: brick.ID,
8585
Name: brick.Name,
8686
Author: "Arduino", // TODO: for now we only support our bricks
8787
Category: brick.Category,
8888
Status: "installed",
8989
RequireModel: brick.RequireModel,
90-
ModelID: brickInstance.Model, // TODO: in case is not set by the user, should we return the default model?
91-
Variables: variablesMap, // TODO: do we want to show also the default value of not explicitly set variables?
90+
ModelID: getSelectedModelOrDefault(brickInstance, brick),
91+
Variables: variablesMap, // TODO: do we want to show also the default value of not explicitly set variables?
9292
ConfigVariables: configVariables,
93+
CompatibleModels: f.Map(s.modelsIndex.GetModelsByBrick(brick.ID), func(m modelsindex.AIModel) AIModel {
94+
return AIModel{
95+
ID: m.ID,
96+
Name: m.Name,
97+
Description: m.ModuleDescription,
98+
}
99+
}),
93100
}
94101

95102
}
@@ -109,11 +116,6 @@ func (s *Service) AppBrickInstanceDetails(a *app.ArduinoApp, brickID string) (Br
109116

110117
variables, configVariables := getInstanceBrickConfigVariableDetails(brick, a.Descriptor.Bricks[brickIndex].Variables)
111118

112-
modelID := a.Descriptor.Bricks[brickIndex].Model
113-
if modelID == "" {
114-
modelID = brick.ModelName
115-
}
116-
117119
return BrickInstance{
118120
ID: brickID,
119121
Name: brick.Name,
@@ -123,7 +125,7 @@ func (s *Service) AppBrickInstanceDetails(a *app.ArduinoApp, brickID string) (Br
123125
RequireModel: brick.RequireModel,
124126
Variables: variables,
125127
ConfigVariables: configVariables,
126-
ModelID: modelID,
128+
ModelID: getSelectedModelOrDefault(a.Descriptor.Bricks[brickIndex], brick),
127129
CompatibleModels: f.Map(s.modelsIndex.GetModelsByBrick(brick.ID), func(m modelsindex.AIModel) AIModel {
128130
return AIModel{
129131
ID: m.ID,
@@ -134,6 +136,16 @@ func (s *Service) AppBrickInstanceDetails(a *app.ArduinoApp, brickID string) (Br
134136
}, nil
135137
}
136138

139+
func getSelectedModelOrDefault(appBrick app.Brick, brickIndex *bricksindex.Brick) string {
140+
if appBrick.Model != "" {
141+
return appBrick.Model
142+
}
143+
if brickIndex == nil {
144+
return ""
145+
}
146+
return brickIndex.ModelName
147+
}
148+
137149
func getInstanceBrickConfigVariableDetails(
138150
brick *bricksindex.Brick, userVariables map[string]string,
139151
) (map[string]string, []BrickConfigVariable) {

internal/orchestrator/bricks/types.go

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,9 @@ type BrickListItem struct {
3030
}
3131

3232
type AppBrickInstancesResult struct {
33-
BrickInstances []BrickInstanceListItem `json:"bricks"`
34-
}
35-
type BrickInstanceListItem struct {
36-
ID string `json:"id"`
37-
Name string `json:"name"`
38-
Author string `json:"author"`
39-
Category string `json:"category"`
40-
Status string `json:"status"`
41-
Variables map[string]string `json:"variables,omitempty" description:"Deprecated: use config_variables instead. This field is kept for backward compatibility."`
42-
ConfigVariables []BrickConfigVariable `json:"config_variables,omitempty"`
43-
RequireModel bool `json:"require_model"`
44-
ModelID string `json:"model,omitempty"`
33+
BrickInstances []BrickInstance `json:"bricks"`
4534
}
35+
4636
type BrickInstance struct {
4737
ID string `json:"id"`
4838
Name string `json:"name"`

0 commit comments

Comments
 (0)