package logic import ( "context" "spark-server/internal/module/friend/entity" "spark-server/internal/pkg/errs" ) type RequestView struct { ID int64 `json:"id"` From UserCard `json:"from"` Reason string `json:"reason"` Source entity.Source `json:"source"` CreatedAt int64 `json:"created_at"` UpdatedAt int64 `json:"updated_at"` } type RequestList struct { Items []*RequestView `json:"items"` } func (s *Service) ListRequests(ctx context.Context, userID int64, limit int) (*RequestList, error) { if !s.ready() || userID <= 0 { return nil, errs.ErrUnauthorized } rows, err := s.repo.ListIncoming(ctx, userID, entity.RequestPending, entity.ClampLimit(limit)) if err != nil { return nil, err } items := make([]*RequestView, 0, len(rows)) for _, req := range rows { from, err := s.users.Get(ctx, req.FromUser) if err != nil { continue } items = append(items, &RequestView{ ID: req.ID, From: cardOf(from), Reason: req.Reason, Source: req.Source, CreatedAt: entity.UnixMS(req.CreatedAt), UpdatedAt: entity.UnixMS(req.UpdatedAt), }) } return &RequestList{Items: items}, nil }