28 lines
865 B
Go
28 lines
865 B
Go
package messages
|
||
|
||
import (
|
||
"context"
|
||
"errors"
|
||
|
||
"telesrv/internal/domain"
|
||
"telesrv/internal/store"
|
||
)
|
||
|
||
// ReserveAlbumGroup 把 RPC 已验证的一批 album item 交给持久层原子预留。
|
||
// 该能力只传 domain DTO;上传媒体解析与 tg 类型仍停留在 RPC edge。
|
||
func (s *Service) ReserveAlbumGroup(ctx context.Context, userID int64, req domain.AlbumGroupReservationRequest) (int64, error) {
|
||
if s == nil || s.messages == nil || userID <= 0 {
|
||
return 0, domain.ErrAlbumGroupReservationInvalid
|
||
}
|
||
if req.SenderUserID == 0 {
|
||
req.SenderUserID = userID
|
||
}
|
||
if req.SenderUserID != userID {
|
||
return 0, domain.ErrAlbumGroupReservationInvalid
|
||
}
|
||
reservations, ok := s.messages.(store.AlbumGroupStore)
|
||
if !ok {
|
||
return 0, errors.New("message store does not support album group reservations")
|
||
}
|
||
return reservations.ReserveAlbumGroup(ctx, req)
|
||
}
|