diff --git a/internal/db/models/http_web_dao.go b/internal/db/models/http_web_dao.go index 0c7cec6a..0e2bd25f 100644 --- a/internal/db/models/http_web_dao.go +++ b/internal/db/models/http_web_dao.go @@ -723,6 +723,16 @@ func (this *HTTPWebDAO) FindEnabledWebIdWithGzipId(tx *dbs.Tx, gzipId int64) (we FindInt64Col(0) } +// 查找包含某个Websocket配置的Web +func (this *HTTPWebDAO) FindEnabledWebIdWithWebsocketId(tx *dbs.Tx, websocketId int64) (webId int64, err error) { + return this.Query(tx). + State(HTTPWebStateEnabled). + ResultPk(). + Where("JSON_CONTAINS(websocket, :jsonQuery)"). + Param("jsonQuery", maps.Map{"websocketId": websocketId}.AsJSON()). + FindInt64Col(0) +} + // 查找使用此Web的Server func (this *HTTPWebDAO) FindWebServerId(tx *dbs.Tx, webId int64) (serverId int64, err error) { if webId <= 0 { diff --git a/internal/db/models/http_web_dao_test.go b/internal/db/models/http_web_dao_test.go index 313769ef..fb340dfd 100644 --- a/internal/db/models/http_web_dao_test.go +++ b/internal/db/models/http_web_dao_test.go @@ -129,3 +129,15 @@ func TestHTTPWebDAO_FindEnabledWebIdWithGzip(t *testing.T) { } t.Log("webId:", webId) } + +func TestHTTPWebDAO_FindEnabledWebIdWithWebsocket(t *testing.T) { + dbs.NotifyReady() + + var tx *dbs.Tx + webId, err := SharedHTTPWebDAO.FindEnabledWebIdWithWebsocketId(tx, 5) + if err != nil { + t.Fatal(err) + } + t.Log("webId:", webId) +} + diff --git a/internal/db/models/http_websocket_dao.go b/internal/db/models/http_websocket_dao.go index 2d7aaebc..0b9f7860 100644 --- a/internal/db/models/http_websocket_dao.go +++ b/internal/db/models/http_websocket_dao.go @@ -47,12 +47,15 @@ func (this *HTTPWebsocketDAO) EnableHTTPWebsocket(tx *dbs.Tx, id int64) error { } // 禁用条目 -func (this *HTTPWebsocketDAO) DisableHTTPWebsocket(tx *dbs.Tx, id int64) error { +func (this *HTTPWebsocketDAO) DisableHTTPWebsocket(tx *dbs.Tx, websocketId int64) error { _, err := this.Query(tx). - Pk(id). + Pk(websocketId). Set("state", HTTPWebsocketStateDisabled). Update() - return err + if err != nil { + return err + } + return this.NotifyUpdate(tx, websocketId) } // 查找启用中的条目 @@ -150,5 +153,20 @@ func (this *HTTPWebsocketDAO) UpdateWebsocket(tx *dbs.Tx, websocketId int64, han op.RequestSameOrigin = requestSameOrigin op.RequestOrigin = requestOrigin err := this.Save(tx, op) - return err + if err != nil { + return err + } + return this.NotifyUpdate(tx, websocketId) +} + +// 通知更新 +func (this *HTTPWebsocketDAO) NotifyUpdate(tx *dbs.Tx, websocketId int64) error { + webId, err := SharedHTTPWebDAO.FindEnabledWebIdWithWebsocketId(tx, websocketId) + if err != nil { + return err + } + if webId > 0 { + return SharedHTTPWebDAO.NotifyUpdate(tx, webId) + } + return nil } diff --git a/internal/db/models/node_dao_test.go b/internal/db/models/node_dao_test.go index c777c793..e98ef6d5 100644 --- a/internal/db/models/node_dao_test.go +++ b/internal/db/models/node_dao_test.go @@ -15,15 +15,6 @@ func TestNodeDAO_FindAllNodeIdsMatch(t *testing.T) { t.Log(nodeIds) } -func TestNodeDAO_FindChangedClusterIds(t *testing.T) { - var tx *dbs.Tx - clusterIds, err := SharedNodeDAO.FindChangedClusterIds(tx) - if err != nil { - t.Fatal(err) - } - t.Log(clusterIds) -} - func TestNodeDAO_UpdateNodeUp(t *testing.T) { dbs.NotifyReady() var tx *dbs.Tx