| 
									
										
										
										
											2022-07-14 03:36:14 +08:00
										 |  |  | package export | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"encoding/json" | 
					
						
							|  |  |  | 	"fmt" | 
					
						
							|  |  |  | 	"path" | 
					
						
							|  |  |  | 	"time" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-19 21:02:15 +08:00
										 |  |  | 	"github.com/grafana/grafana/pkg/infra/db" | 
					
						
							| 
									
										
										
										
											2022-07-14 03:36:14 +08:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func exportPlugins(helper *commitHelper, job *gitExportJob) error { | 
					
						
							| 
									
										
										
										
											2022-10-19 21:02:15 +08:00
										 |  |  | 	return job.sql.WithDbSession(helper.ctx, func(sess *db.Session) error { | 
					
						
							| 
									
										
										
										
											2022-07-14 03:36:14 +08:00
										 |  |  | 		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 { | 
					
						
							| 
									
										
										
										
											2022-11-11 03:16:31 +08:00
										 |  |  | 			if isTableNotExistsError(err) { | 
					
						
							| 
									
										
										
										
											2022-07-14 03:36:14 +08:00
										 |  |  | 				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 | 
					
						
							|  |  |  | 	}) | 
					
						
							|  |  |  | } |