diff --git a/.gitignore b/.gitignore index 9985c4b..70c9e5f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ config/local.yaml config/docker-compose.yaml docker-compose.yaml -.DS_Store \ No newline at end of file +.DS_Store +blockscout-vc \ No newline at end of file diff --git a/cmd/sidecar.go b/cmd/sidecar.go index 9f619cf..0785ace 100644 --- a/cmd/sidecar.go +++ b/cmd/sidecar.go @@ -52,7 +52,9 @@ func StartSidecarCmd() *cobra.Command { // Initialize and start subscription service sub := subscription.New(client) - sub.Subscribe(worker) + if err := sub.Subscribe(worker); err != nil { + return fmt.Errorf("failed to subscribe: %w", err) + } defer sub.Stop() // Wait for interrupt signal diff --git a/internal/client/client.go b/internal/client/client.go index f514de0..e65fa84 100644 --- a/internal/client/client.go +++ b/internal/client/client.go @@ -11,7 +11,6 @@ import ( // Client represents a WebSocket client connection to Supabase Realtime type Client struct { - conn *websocket.Conn apiKey string endpoint string handlers map[string]func([]byte) diff --git a/internal/docker/docker.go b/internal/docker/docker.go index 89dac5f..83ad9f8 100644 --- a/internal/docker/docker.go +++ b/internal/docker/docker.go @@ -28,9 +28,7 @@ func (d *Docker) RecreateContainers(containerNames []string) error { uniqueContainers := d.UniqueContainerNames(containerNames) args := []string{"compose", "-f", pathToDockerCompose, "up", "-d", "--force-recreate"} - for _, containerName := range uniqueContainers { - args = append(args, containerName) - } + args = append(args, uniqueContainers...) cmd := exec.Command("docker", args...) cmd.Stdout = os.Stdout diff --git a/internal/heartbeat/heartbeat.go b/internal/heartbeat/heartbeat.go index 6a23f43..522913c 100644 --- a/internal/heartbeat/heartbeat.go +++ b/internal/heartbeat/heartbeat.go @@ -3,6 +3,7 @@ package heartbeat import ( "blockscout-vc/internal/client" + "log" "time" "github.com/google/uuid" @@ -48,7 +49,9 @@ func (h *HeartbeatService) Start() { for { select { case <-ticker.C: - sendHeartbeat(h.client.Conn) + if err := sendHeartbeat(h.client.Conn); err != nil { + log.Printf("Failed to send heartbeat: %v", err) + } case <-h.stopChan: ticker.Stop() return diff --git a/internal/subscription/subscription.go b/internal/subscription/subscription.go index bd3f4a0..e1c15f4 100644 --- a/internal/subscription/subscription.go +++ b/internal/subscription/subscription.go @@ -92,7 +92,9 @@ func (s *Subscription) Subscribe(worker *worker.Worker) error { if record.Event == "postgres_changes" { table := viper.GetString("table") if record.Payload.Data.Table == table { - record.HandleMessage() + if err := record.HandleMessage(); err != nil { + log.Printf("Failed to handle message: %v", err) + } } else { log.Printf("Unhandled table: %s", record.Payload.Data.Table) } @@ -127,9 +129,8 @@ func (s *Subscription) Subscribe(worker *worker.Worker) error { } // Stop closes the subscription connection -func (s *Subscription) Stop() error { +func (s *Subscription) Stop() { s.client.Close() - return nil } // NewPostgresChanges creates a PostgresChanges instance from a raw message