package v1 import ( "quyun/v2/app/http/v1/dto" "quyun/v2/app/services" "quyun/v2/pkg/consts" "github.com/gofiber/fiber/v3" "github.com/spf13/cast" ) // @provider type Tenant struct{} // Get tenant public profile // // @Router /v1/tenants/:id [get] // @Summary Get tenant profile // @Description Get tenant public profile // @Tags TenantPublic // @Accept json // @Produce json // @Param id path string true "Tenant ID" // @Success 200 {object} dto.TenantProfile // @Bind id path func (t *Tenant) Get(ctx fiber.Ctx, id string) (*dto.TenantProfile, error) { uid := cast.ToInt64(ctx.Locals(consts.CtxKeyUser)) return services.Tenant.GetPublicProfile(ctx.Context(), uid, id) } // Follow a tenant // // @Router /v1/tenants/:id/follow [post] // @Summary Follow tenant // @Description Follow a tenant // @Tags TenantPublic // @Accept json // @Produce json // @Param id path string true "Tenant ID" // @Success 200 {string} string "Followed" // @Bind id path func (t *Tenant) Follow(ctx fiber.Ctx, id string) error { uid := cast.ToInt64(ctx.Locals(consts.CtxKeyUser)) return services.Tenant.Follow(ctx.Context(), uid, id) } // Unfollow a tenant // // @Router /v1/tenants/:id/follow [delete] // @Summary Unfollow tenant // @Description Unfollow a tenant // @Tags TenantPublic // @Accept json // @Produce json // @Param id path string true "Tenant ID" // @Success 200 {string} string "Unfollowed" // @Bind id path func (t *Tenant) Unfollow(ctx fiber.Ctx, id string) error { uid := cast.ToInt64(ctx.Locals(consts.CtxKeyUser)) return services.Tenant.Unfollow(ctx.Context(), uid, id) }