MCPcopy Create free account
hub / github.com/QuantumNous/new-api / SaveTaskPlugin

Function SaveTaskPlugin

model/task_plugin.go:50–77  ·  view source on GitHub ↗
(plugin *TaskPlugin)

Source from the content-addressed store, hash-verified

48}
49
50func SaveTaskPlugin(plugin *TaskPlugin) error {
51 return DB.Transaction(func(tx *gorm.DB) error {
52 var existing TaskPlugin
53 err := tx.Where(&TaskPlugin{Key: plugin.Key, Version: plugin.Version}).First(&existing).Error
54 if err == nil {
55 if existing.SourceHash != plugin.SourceHash {
56 return errors.New("plugin key and version already exist with different source")
57 }
58 if err = tx.Model(&existing).Updates(map[string]any{"enabled": plugin.Enabled, "remark": plugin.Remark}).Error; err != nil {
59 return err
60 }
61 existing.Enabled = plugin.Enabled
62 existing.Remark = plugin.Remark
63 *plugin = existing
64 return nil
65 }
66 if !errors.Is(err, gorm.ErrRecordNotFound) {
67 return err
68 }
69 plugin.CreatedAt = time.Now().Unix()
70 var count int64
71 if err = tx.Model(&TaskPlugin{}).Where(&TaskPlugin{Key: plugin.Key, Active: true}).Count(&count).Error; err != nil {
72 return err
73 }
74 plugin.Active = count == 0
75 return tx.Create(plugin).Error
76 })
77}
78
79func ListTaskPluginVersions(key string) ([]TaskPlugin, error) {
80 var plugins []TaskPlugin

Calls 1

CountMethod · 0.80