option.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package controller
  2. import (
  3. "net/http"
  4. "github.com/gin-gonic/gin"
  5. "github.com/labring/aiproxy/middleware"
  6. "github.com/labring/aiproxy/model"
  7. )
  8. // GetOptions godoc
  9. //
  10. // @Summary Get options
  11. // @Description Returns a list of options
  12. // @Tags option
  13. // @Produce json
  14. // @Security ApiKeyAuth
  15. // @Success 200 {object} middleware.APIResponse{data=map[string]string}
  16. // @Router /api/options [get]
  17. func GetOptions(c *gin.Context) {
  18. dbOptions, err := model.GetAllOption()
  19. if err != nil {
  20. middleware.ErrorResponse(c, http.StatusOK, err.Error())
  21. return
  22. }
  23. options := make(map[string]string, len(dbOptions))
  24. for _, option := range dbOptions {
  25. options[option.Key] = option.Value
  26. }
  27. middleware.SuccessResponse(c, options)
  28. }
  29. // GetOption godoc
  30. //
  31. // @Summary Get option
  32. // @Description Returns a single option
  33. // @Tags option
  34. // @Produce json
  35. // @Security ApiKeyAuth
  36. // @Param key path string true "Option key"
  37. // @Success 200 {object} middleware.APIResponse{data=model.Option}
  38. // @Router /api/options/{key} [get]
  39. func GetOption(c *gin.Context) {
  40. key := c.Param("key")
  41. if key == "" {
  42. middleware.ErrorResponse(c, http.StatusOK, "key is required")
  43. return
  44. }
  45. option, err := model.GetOption(key)
  46. if err != nil {
  47. middleware.ErrorResponse(c, http.StatusOK, err.Error())
  48. return
  49. }
  50. middleware.SuccessResponse(c, option)
  51. }
  52. // UpdateOption godoc
  53. //
  54. // @Summary Update option
  55. // @Description Updates a single option
  56. // @Tags option
  57. // @Produce json
  58. // @Security ApiKeyAuth
  59. // @Param key path string true "Option key"
  60. // @Param value body string true "Option value"
  61. // @Success 200 {object} middleware.APIResponse
  62. // @Router /api/options/{key} [put]
  63. func UpdateOption(c *gin.Context) {
  64. var option model.Option
  65. err := c.BindJSON(&option)
  66. if err != nil {
  67. middleware.ErrorResponse(c, http.StatusOK, err.Error())
  68. return
  69. }
  70. err = model.UpdateOption(option.Key, option.Value)
  71. if err != nil {
  72. middleware.ErrorResponse(c, http.StatusOK, err.Error())
  73. return
  74. }
  75. middleware.SuccessResponse(c, nil)
  76. }
  77. // UpdateOptions godoc
  78. //
  79. // @Summary Update options
  80. // @Description Updates multiple options
  81. // @Tags option
  82. // @Produce json
  83. // @Security ApiKeyAuth
  84. // @Param options body map[string]string true "Options"
  85. // @Success 200 {object} middleware.APIResponse
  86. // @Router /api/options [put]
  87. func UpdateOptions(c *gin.Context) {
  88. var options map[string]string
  89. err := c.BindJSON(&options)
  90. if err != nil {
  91. middleware.ErrorResponse(c, http.StatusOK, err.Error())
  92. return
  93. }
  94. err = model.UpdateOptions(options)
  95. if err != nil {
  96. middleware.ErrorResponse(c, http.StatusOK, err.Error())
  97. return
  98. }
  99. middleware.SuccessResponse(c, nil)
  100. }