datasources.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package api
  2. import (
  3. "github.com/grafana/grafana/pkg/api/dtos"
  4. "github.com/grafana/grafana/pkg/bus"
  5. "github.com/grafana/grafana/pkg/middleware"
  6. m "github.com/grafana/grafana/pkg/models"
  7. "github.com/grafana/grafana/pkg/plugins"
  8. )
  9. func GetDataSources(c *middleware.Context) {
  10. query := m.GetDataSourcesQuery{OrgId: c.OrgId}
  11. if err := bus.Dispatch(&query); err != nil {
  12. c.JsonApiErr(500, "Failed to query datasources", err)
  13. return
  14. }
  15. result := make([]*dtos.DataSource, len(query.Result))
  16. for i, ds := range query.Result {
  17. result[i] = &dtos.DataSource{
  18. Id: ds.Id,
  19. OrgId: ds.OrgId,
  20. Name: ds.Name,
  21. Url: ds.Url,
  22. Type: ds.Type,
  23. Access: ds.Access,
  24. Password: ds.Password,
  25. Database: ds.Database,
  26. User: ds.User,
  27. BasicAuth: ds.BasicAuth,
  28. IsDefault: ds.IsDefault,
  29. }
  30. }
  31. c.JSON(200, result)
  32. }
  33. func GetDataSourceById(c *middleware.Context) {
  34. query := m.GetDataSourceByIdQuery{
  35. Id: c.ParamsInt64(":id"),
  36. OrgId: c.OrgId,
  37. }
  38. if err := bus.Dispatch(&query); err != nil {
  39. c.JsonApiErr(500, "Failed to query datasources", err)
  40. return
  41. }
  42. ds := query.Result
  43. c.JSON(200, &dtos.DataSource{
  44. Id: ds.Id,
  45. OrgId: ds.OrgId,
  46. Name: ds.Name,
  47. Url: ds.Url,
  48. Type: ds.Type,
  49. Access: ds.Access,
  50. Password: ds.Password,
  51. Database: ds.Database,
  52. User: ds.User,
  53. BasicAuth: ds.BasicAuth,
  54. BasicAuthUser: ds.BasicAuthUser,
  55. BasicAuthPassword: ds.BasicAuthPassword,
  56. IsDefault: ds.IsDefault,
  57. JsonData: ds.JsonData,
  58. })
  59. }
  60. func DeleteDataSource(c *middleware.Context) {
  61. id := c.ParamsInt64(":id")
  62. if id <= 0 {
  63. c.JsonApiErr(400, "Missing valid datasource id", nil)
  64. return
  65. }
  66. cmd := &m.DeleteDataSourceCommand{Id: id, OrgId: c.OrgId}
  67. err := bus.Dispatch(cmd)
  68. if err != nil {
  69. c.JsonApiErr(500, "Failed to delete datasource", err)
  70. return
  71. }
  72. c.JsonOK("Data source deleted")
  73. }
  74. func AddDataSource(c *middleware.Context, cmd m.AddDataSourceCommand) {
  75. cmd.OrgId = c.OrgId
  76. if err := bus.Dispatch(&cmd); err != nil {
  77. c.JsonApiErr(500, "Failed to add datasource", err)
  78. return
  79. }
  80. c.JsonOK("Datasource added")
  81. }
  82. func UpdateDataSource(c *middleware.Context, cmd m.UpdateDataSourceCommand) {
  83. cmd.OrgId = c.OrgId
  84. err := bus.Dispatch(&cmd)
  85. if err != nil {
  86. c.JsonApiErr(500, "Failed to update datasource", err)
  87. return
  88. }
  89. c.JsonOK("Datasource updated")
  90. }
  91. func GetDataSourcePlugins(c *middleware.Context) {
  92. c.JSON(200, plugins.DataSources)
  93. }