datasources.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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. IsDefault: ds.IsDefault,
  55. JsonData: ds.JsonData,
  56. })
  57. }
  58. func DeleteDataSource(c *middleware.Context) {
  59. id := c.ParamsInt64(":id")
  60. if id <= 0 {
  61. c.JsonApiErr(400, "Missing valid datasource id", nil)
  62. return
  63. }
  64. cmd := &m.DeleteDataSourceCommand{Id: id, OrgId: c.OrgId}
  65. err := bus.Dispatch(cmd)
  66. if err != nil {
  67. c.JsonApiErr(500, "Failed to delete datasource", err)
  68. return
  69. }
  70. c.JsonOK("Data source deleted")
  71. }
  72. func AddDataSource(c *middleware.Context) {
  73. cmd := m.AddDataSourceCommand{}
  74. if !c.JsonBody(&cmd) {
  75. c.JsonApiErr(400, "Validation failed", nil)
  76. return
  77. }
  78. cmd.OrgId = c.OrgId
  79. if err := bus.Dispatch(&cmd); err != nil {
  80. c.JsonApiErr(500, "Failed to add datasource", err)
  81. return
  82. }
  83. c.JsonOK("Datasource added")
  84. }
  85. func UpdateDataSource(c *middleware.Context, cmd m.UpdateDataSourceCommand) {
  86. cmd.OrgId = c.OrgId
  87. err := bus.Dispatch(&cmd)
  88. if err != nil {
  89. c.JsonApiErr(500, "Failed to update datasource", err)
  90. return
  91. }
  92. c.JsonOK("Datasource updated")
  93. }
  94. func GetDataSourcePlugins(c *middleware.Context) {
  95. c.JSON(200, plugins.DataSources)
  96. }