瀏覽代碼

fix: remote installation

Yeuoly 10 月之前
父節點
當前提交
d919d0fbba
共有 3 個文件被更改,包括 12 次插入7 次删除
  1. 8 1
      internal/core/plugin_manager/watcher.go
  2. 3 5
      internal/db/pgsql.go
  3. 1 1
      internal/service/install_service/state.go

+ 8 - 1
internal/core/plugin_manager/watcher.go

@@ -43,7 +43,14 @@ func (p *PluginManager) startRemoteWatcher(config *app.Config) {
 		}()
 		go func() {
 			server.Wrap(func(rpr *remote_manager.RemotePluginRuntime) {
-				p.fullDuplexLifetime(rpr)
+				routine.Submit(func() {
+					defer func() {
+						if err := recover(); err != nil {
+							log.Error("plugin runtime error: %v", err)
+						}
+					}()
+					p.fullDuplexLifetime(rpr)
+				})
 			})
 		}()
 	}

+ 3 - 5
internal/db/pgsql.go

@@ -153,13 +153,11 @@ func WithoutBit[T genericComparableConstraint](field string, value T) GenericQue
 
 func Inc[T genericComparableConstraint](updates map[string]T) GenericQuery {
 	return func(tx *gorm.DB) *gorm.DB {
-		expressions := make([]string, 0, len(updates))
-		values := make([]interface{}, 0, len(updates))
+		m := make(map[string]any)
 		for field, value := range updates {
-			expressions = append(expressions, fmt.Sprintf("%s = %s + ?", field, field))
-			values = append(values, value)
+			m[field] = gorm.Expr(fmt.Sprintf("%s + ?", field), value)
 		}
-		return tx.UpdateColumns(gorm.Expr(strings.Join(expressions, ", "), values...))
+		return tx.UpdateColumns(m)
 	}
 }
 

+ 1 - 1
internal/service/install_service/state.go

@@ -200,5 +200,5 @@ func UpdateEndpoint(endpoint *models.Endpoint, settings map[string]any) error {
 
 	endpoint.Settings = string(settings_json)
 
-	return db.Update(endpoint, nil)
+	return db.Update(endpoint)
 }