package controllers import ( "easywish/internal/middleware" "net/http" "github.com/gin-gonic/gin" ) type ProfileController interface { GetProfile(c *gin.Context) GetOwnProfile(c *gin.Context) UpdateProfile(c *gin.Context) GetPrivacySettings(c *gin.Context) UpdatePrivacySettings(c *gin.Context) Router } type profileControllerImpl struct { } func NewProfileController() ProfileController { return &profileControllerImpl{} } // @Summary Get someone's profile details // @Tags Profile // @Accept json // @Produce json // @Param username path string true "Username" // @Security JWT // @Router /profile/{username} [get] func (p *profileControllerImpl) GetProfile(c *gin.Context) { c.Status(http.StatusNotImplemented) } // @Summary Get own profile when authorized // @Tags Profile // @Accept json // @Produce json // @Security JWT // @Router /profile/me [get] func (p *profileControllerImpl) GetOwnProfile(c *gin.Context) { c.Status(http.StatusNotImplemented) } // @Summary Update profile // @Tags Profile // @Accept json // @Produce json // @Security JWT // @Router /profile [patch] func (p *profileControllerImpl) UpdateProfile(c *gin.Context) { c.Status(http.StatusNotImplemented) } // @Summary Get profile privacy settings // @Tags Profile // @Accept json // @Produce json // @Security JWT // @Router /profile/privacy [get] func (p *profileControllerImpl) GetPrivacySettings(c *gin.Context) { c.Status(http.StatusNotImplemented) } // @Summary Update profile privacy settings // @Tags Profile // @Accept json // @Produce json // @Security JWT // @Router /profile/privacy [patch] func (p *profileControllerImpl) UpdatePrivacySettings(c *gin.Context) { c.Status(http.StatusNotImplemented) } func (p *profileControllerImpl) RegisterRoutes(group *gin.RouterGroup) { protected := group.Group("") protected.Use(middleware.JWTAuthMiddleware()) { protected.GET("/me", p.GetOwnProfile) protected.GET("/:username", p.GetProfile) protected.GET("/privacy", p.GetPrivacySettings) } }