spark-server/internal/module/friend/logic/requests.go
2026-09-18 14:50:41 +08:00

48 lines
1.2 KiB
Go

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
}