grafana/pkg/services/export/export_plugins.go
2022-11-10 14:16:31 -05:00

53 lines
1.3 KiB
Go

package export
import (
"encoding/json"
"fmt"
"path"
"time"
"github.com/grafana/grafana/pkg/infra/db"
)
func exportPlugins(helper *commitHelper, job *gitExportJob) error {
return job.sql.WithDbSession(helper.ctx, func(sess *db.Session) error {
type pResult struct {
PluginID string `xorm:"plugin_id" json:"-"`
Enabled string `xorm:"enabled" json:"enabled"`
Pinned string `xorm:"pinned" json:"pinned"`
JSONData json.RawMessage `xorm:"json_data" json:"json_data,omitempty"`
// TODO: secure!!!!
PluginVersion string `xorm:"plugin_version" json:"version"`
Created time.Time `xorm:"created" json:"created"`
Updated time.Time `xorm:"updated" json:"updated"`
}
rows := make([]*pResult, 0)
sess.Table("plugin_setting").Where("org_id = ?", helper.orgID)
err := sess.Find(&rows)
if err != nil {
if isTableNotExistsError(err) {
return nil
}
return err
}
for _, row := range rows {
err = helper.add(commitOptions{
body: []commitBody{{
body: prettyJSON(row),
fpath: path.Join(helper.orgDir, "plugins", row.PluginID, "settings.json"),
}},
comment: fmt.Sprintf("Plugin: %s", row.PluginID),
when: row.Updated,
})
if err != nil {
return err
}
}
return err
})
}