Skip to content

Commit c86a37a

Browse files
committed
refactor: extract ECS tui submodel
1 parent 7d292b2 commit c86a37a

5 files changed

Lines changed: 247 additions & 218 deletions

File tree

internal/app/app.go

Lines changed: 3 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -143,26 +143,6 @@ type Model struct {
143143
sgAddInput string // current field text input
144144
sgAddSelectIdx int // index for select-type fields (direction, protocol)
145145

146-
// ECS browser state
147-
ecsClusters []awsservice.ECSCluster
148-
filteredECSClusters []awsservice.ECSCluster
149-
ecsClusterIdx int
150-
selectedECSCluster *awsservice.ECSCluster
151-
152-
ecsServices []awsservice.ECSService
153-
filteredECSServices []awsservice.ECSService
154-
ecsServiceIdx int
155-
selectedECSService *awsservice.ECSService
156-
selectedECSDetail *awsservice.ECSServiceDetail
157-
ecsDetailScroll int
158-
159-
ecsTasks []awsservice.ECSTask
160-
ecsTaskIdx int
161-
selectedECSTask *awsservice.ECSTask
162-
163-
ecsContainers []awsservice.ECSContainer
164-
ecsContainerIdx int
165-
166146
// EKS browser state
167147
eksClusters []awsservice.EKSCluster
168148
filteredEKSClusters []awsservice.EKSCluster
@@ -194,6 +174,7 @@ type Model struct {
194174

195175
// Feature submodels
196176
ec2Browser ec2InstanceBrowserModel
177+
ecs ecsModel
197178
vpc vpcModel
198179
reachability reachabilityModel
199180
cwMetrics cloudWatchMetricsModel
@@ -304,6 +285,7 @@ func New(cfg *config.Config, configPath string, version string, checklistPath ..
304285
contextTable: newContextTable(),
305286
}
306287
model.ec2Browser = newEC2InstanceBrowserModel()
288+
model.ecs = newECSModel()
307289
model.vpc = newVPCModel()
308290
model.reachability = newReachabilityModel()
309291
model.cwMetrics = newCloudWatchMetricsModel()
@@ -412,7 +394,6 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
412394
for _, h := range []func(tea.Msg) (tea.Model, tea.Cmd, bool){
413395
m.handleEC2VPCMsg,
414396
m.handleSecurityGroupMsg,
415-
m.handleECSMsg,
416397
m.handleEKSMsg,
417398
m.handleECRMsg,
418399
m.handleInspectorMsg,
@@ -504,16 +485,6 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
504485
return m.updateSecurityGroupAddRule(msg)
505486
case screenSecurityGroupDeleteConfirm:
506487
return m.updateSecurityGroupDeleteConfirm(msg)
507-
case screenECSClusterList:
508-
return m.updateECSClusterList(msg)
509-
case screenECSServiceList:
510-
return m.updateECSServiceList(msg)
511-
case screenECSServiceDetail:
512-
return m.updateECSServiceDetail(msg)
513-
case screenECSTaskList:
514-
return m.updateECSTaskList(msg)
515-
case screenECSContainerList:
516-
return m.updateECSContainerList(msg)
517488
case screenEKSClusterList:
518489
return m.updateEKSClusterList(msg)
519490
case screenEKSNodeGroupList:
@@ -635,7 +606,7 @@ func (m Model) updateFeatureList(msg tea.KeyMsg) (tea.Model, tea.Cmd) {
635606
case domain.FeatureRotateAccessKey:
636607
return m.iam.StartKeys(&m, true)
637608
case domain.FeatureECSExec:
638-
return m.startLoading(m.loadECSClusters())
609+
return m.ecs.Start(&m)
639610
case domain.FeatureECRRepositoryBrowser:
640611
return m.startLoading(m.loadECRRepositories())
641612
case domain.FeatureEKSBrowser:
@@ -708,16 +679,6 @@ func (m Model) View() string {
708679
v = m.viewSecurityGroupAddRule()
709680
case screenSecurityGroupDeleteConfirm:
710681
v = m.viewSecurityGroupDeleteConfirm()
711-
case screenECSClusterList:
712-
v = m.viewECSClusterList()
713-
case screenECSServiceList:
714-
v = m.viewECSServiceList()
715-
case screenECSServiceDetail:
716-
v = m.viewECSServiceDetail()
717-
case screenECSTaskList:
718-
v = m.viewECSTaskList()
719-
case screenECSContainerList:
720-
v = m.viewECSContainerList()
721682
case screenEKSClusterList:
722683
v = m.viewEKSClusterList()
723684
case screenEKSNodeGroupList:

internal/app/feature_submodel.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@ type featureSubmodel interface {
1010
}
1111

1212
func (m *Model) featureSubmodels() []featureSubmodel {
13-
return []featureSubmodel{&m.ec2Browser, &m.vpc, &m.reachability, &m.cwMetrics, &m.cwLogs, &m.rds, &m.route53, &m.iam, &m.bedrock, &m.secrets, &m.s3, &m.lambda}
13+
return []featureSubmodel{&m.ec2Browser, &m.ecs, &m.vpc, &m.reachability, &m.cwMetrics, &m.cwLogs, &m.rds, &m.route53, &m.iam, &m.bedrock, &m.secrets, &m.s3, &m.lambda}
1414
}

internal/app/filter.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -171,12 +171,6 @@ func (m *Model) applyFilterTarget(target filterTarget) {
171171
case filterSecurityGroups:
172172
m.filteredSecurityGroups = applyFilter(m.securityGroups, m.filterValue(target))
173173
m.sgIdx = 0
174-
case filterECSClusters:
175-
m.filteredECSClusters = applyFilter(m.ecsClusters, m.filterValue(target))
176-
m.ecsClusterIdx = 0
177-
case filterECSServices:
178-
m.filteredECSServices = applyFilter(m.ecsServices, m.filterValue(target))
179-
m.ecsServiceIdx = 0
180174
case filterEKSClusters:
181175
m.filteredEKSClusters = applyFilter(m.eksClusters, m.filterValue(target))
182176
m.eksClusterIdx = 0

0 commit comments

Comments
 (0)