From 510e4008cdf3b16e434ef3727a7456c597e58330 Mon Sep 17 00:00:00 2001 From: wisplite Date: Thu, 23 Apr 2026 03:12:15 -0500 Subject: [PATCH] fire query update on subscribe --- engine.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/engine.go b/engine.go index 734ebd7..44230d4 100644 --- a/engine.go +++ b/engine.go @@ -91,7 +91,7 @@ func (e *Engine) InvalidateTable(tableName string) { slog.Error("Failed to unmarshal params", "error", err) continue } - _, err = e.ExecuteQuery(query, params, subscription["clientID"]) + _, err = e.ExecuteQuery(query, params, subscription["clientID"], false) if err != nil { slog.Error("Failed to execute query", "error", err) continue @@ -100,7 +100,7 @@ func (e *Engine) InvalidateTable(tableName string) { } } -func (e *Engine) ExecuteQuery(query string, params map[string]interface{}, clientID string) (interface{}, error) { +func (e *Engine) ExecuteQuery(query string, params map[string]interface{}, clientID string, forceSend bool) (interface{}, error) { /* TODO: implement the logic to execute the query Steps needed: @@ -125,7 +125,7 @@ func (e *Engine) ExecuteQuery(query string, params map[string]interface{}, clien return nil, err } queryHash := xxhash.Sum64(responseJSON) - if lastHash == queryHash { + if lastHash == queryHash && !forceSend { // we want to force send on first subscription, regardless of if the query hasn't changed return result, nil } @@ -151,6 +151,7 @@ func (e *Engine) OnReceiveMessage(clientID string, msg map[string]interface{}) e return err } e.tracker.SubscribeToQuery(clientID, msg["location"].(string), string(paramsJSON)) + e.ExecuteQuery(msg["location"].(string), msg["params"].(map[string]interface{}), clientID, true) case "mutation": e.ExecuteMutation(msg["location"].(string), msg["params"].(map[string]interface{}), clientID) }