fix(preview): remove route from config on preview delete
Delete only removed from the preview store, leaving stale routes in the config. Now calls routeManager.RemoveRoute when available.
- commit
- 9b3f80991155afa2b59e6ee22b7007629a43b91f
- author
- brice · · 2026-03-18 20:55 UTC
- committer
- brice · · 2026-03-18 19:27 UTC
- parent
- 5418cc6
- signature
- unsigned
1 file · +15 -1
M internal/usecase/auto/preview/service.go +15 -1
| @@ -116,11 +116,13 @@ func (s *Service) Update(ctx context.Context, p domain.PreviewRoute) error { | |||
| 116 | 116 | ||
| 117 | 117 | func (s *Service) Delete(ctx context.Context, name string) error { | |
| 118 | 118 | s.mu.Lock() | |
| 119 | + | var deleted domain.PreviewRoute | |
| 119 | 120 | found := false | |
| 120 | 121 | filtered := make([]domain.PreviewRoute, 0, len(s.previews)) | |
| 121 | 122 | for _, p := range s.previews { | |
| 122 | 123 | if p.Name == name { | |
| 123 | 124 | found = true | |
| 125 | + | deleted = p | |
| 124 | 126 | } else { | |
| 125 | 127 | filtered = append(filtered, p) | |
| 126 | 128 | } | |
| @@ -133,7 +135,19 @@ func (s *Service) Delete(ctx context.Context, name string) error { | |||
| 133 | 135 | cp := make([]domain.PreviewRoute, len(s.previews)) | |
| 134 | 136 | copy(cp, s.previews) | |
| 135 | 137 | s.mu.Unlock() | |
| 136 | - | return s.store.Save(ctx, cp) | |
| 138 | + | ||
| 139 | + | if err := s.store.Save(ctx, cp); err != nil { | |
| 140 | + | return err | |
| 141 | + | } | |
| 142 | + | ||
| 143 | + | // Clean up the route from config so proxy stops routing to this domain. | |
| 144 | + | if s.routeManager != nil && deleted.Domain != "" { | |
| 145 | + | log := zerowrap.FromCtx(ctx) | |
| 146 | + | if err := s.routeManager.RemoveRoute(ctx, deleted.Domain); err != nil { | |
| 147 | + | log.Debug().Err(err).Str("domain", deleted.Domain).Msg("preview route already removed from config") | |
| 148 | + | } | |
| 149 | + | } | |
| 150 | + | return nil | |
| 137 | 151 | } | |
| 138 | 152 | ||
| 139 | 153 | func (s *Service) Get(_ context.Context, name string) (*domain.PreviewRoute, error) { | |
| @@ -116,11 +116,13 @@ func (s *Service) Update(ctx context.Context, p domain.PreviewRoute) error { | |||||
| 116 | 116 | ||||
| 117 | func (s *Service) Delete(ctx context.Context, name string) error { | 117 | func (s *Service) Delete(ctx context.Context, name string) error { | ||
| 118 | s.mu.Lock() | 118 | s.mu.Lock() | ||
| 119 | + | var deleted domain.PreviewRoute | |||
| 119 | found := false | 120 | found := false | ||
| 120 | filtered := make([]domain.PreviewRoute, 0, len(s.previews)) | 121 | filtered := make([]domain.PreviewRoute, 0, len(s.previews)) | ||
| 121 | for _, p := range s.previews { | 122 | for _, p := range s.previews { | ||
| 122 | if p.Name == name { | 123 | if p.Name == name { | ||
| 123 | found = true | 124 | found = true | ||
| 125 | + | deleted = p | |||
| 124 | } else { | 126 | } else { | ||
| 125 | filtered = append(filtered, p) | 127 | filtered = append(filtered, p) | ||
| 126 | } | 128 | } | ||
| @@ -133,7 +135,19 @@ func (s *Service) Delete(ctx context.Context, name string) error { | |||||
| 133 | cp := make([]domain.PreviewRoute, len(s.previews)) | 135 | cp := make([]domain.PreviewRoute, len(s.previews)) | ||
| 134 | copy(cp, s.previews) | 136 | copy(cp, s.previews) | ||
| 135 | s.mu.Unlock() | 137 | s.mu.Unlock() | ||
| 136 | - | return s.store.Save(ctx, cp) | 138 | + | |
| 139 | + | if err := s.store.Save(ctx, cp); err != nil { | |||
| 140 | + | return err | |||
| 141 | + | } | |||
| 142 | + | ||||
| 143 | + | // Clean up the route from config so proxy stops routing to this domain. | |||
| 144 | + | if s.routeManager != nil && deleted.Domain != "" { | |||
| 145 | + | log := zerowrap.FromCtx(ctx) | |||
| 146 | + | if err := s.routeManager.RemoveRoute(ctx, deleted.Domain); err != nil { | |||
| 147 | + | log.Debug().Err(err).Str("domain", deleted.Domain).Msg("preview route already removed from config") | |||
| 148 | + | } | |||
| 149 | + | } | |||
| 150 | + | return nil | |||
| 137 | } | 151 | } | ||
| 138 | 152 | ||||
| 139 | func (s *Service) Get(_ context.Context, name string) (*domain.PreviewRoute, error) { | 153 | func (s *Service) Get(_ context.Context, name string) (*domain.PreviewRoute, error) { | ||