datasources.go 2.5 KB

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