controller.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. package remotestore
  2. import (
  3. "database/sql"
  4. "errors"
  5. "github.com/ente-io/museum/ente"
  6. "github.com/ente-io/museum/pkg/repo/remotestore"
  7. "github.com/ente-io/museum/pkg/utils/auth"
  8. "github.com/ente-io/stacktrace"
  9. "github.com/gin-gonic/gin"
  10. )
  11. // Controller is interface for exposing business logic related to for remote store
  12. type Controller struct {
  13. Repo *remotestore.Repository
  14. }
  15. // Insert of update the key's value
  16. func (c *Controller) InsertOrUpdate(ctx *gin.Context, request ente.UpdateKeyValueRequest) error {
  17. userID := auth.GetUserID(ctx.Request.Header)
  18. return c.Repo.InsertOrUpdate(ctx, userID, request.Key, request.Value)
  19. }
  20. func (c *Controller) Get(ctx *gin.Context, req ente.GetValueRequest) (*ente.GetValueResponse, error) {
  21. userID := auth.GetUserID(ctx.Request.Header)
  22. value, err := c.Repo.GetValue(ctx, userID, req.Key)
  23. if err != nil {
  24. if errors.Is(err, sql.ErrNoRows) && req.DefaultValue != nil {
  25. return &ente.GetValueResponse{Value: *req.DefaultValue}, nil
  26. } else {
  27. return nil, stacktrace.Propagate(err, "")
  28. }
  29. }
  30. return &ente.GetValueResponse{Value: value}, nil
  31. }