37 lines
1.1 KiB
Go
37 lines
1.1 KiB
Go
package live
|
|
|
|
import (
|
|
"context"
|
|
|
|
bizlive "kra/internal/biz/live"
|
|
"kra/internal/service/dto"
|
|
)
|
|
|
|
type StreamService struct{ uc *bizlive.StreamUsecase }
|
|
|
|
func NewStreamService(uc *bizlive.StreamUsecase) *StreamService { return &StreamService{uc: uc} }
|
|
|
|
func (s *StreamService) List(ctx context.Context) ([]*dto.LiveStreamResponse, error) {
|
|
streams, err := s.uc.List(ctx)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result := make([]*dto.LiveStreamResponse, 0, len(streams))
|
|
for _, stream := range streams {
|
|
result = append(result, &dto.LiveStreamResponse{StreamID: stream.StreamID, PublisherOnline: stream.PublisherOnline, SubscriberCount: stream.SubscriberCount})
|
|
}
|
|
return result, nil
|
|
}
|
|
|
|
func (s *StreamService) Get(ctx context.Context, streamID string) (*dto.LiveStreamResponse, error) {
|
|
stream, err := s.uc.Get(ctx, streamID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &dto.LiveStreamResponse{StreamID: stream.StreamID, PublisherOnline: stream.PublisherOnline, SubscriberCount: stream.SubscriberCount}, nil
|
|
}
|
|
|
|
func (s *StreamService) Like(ctx context.Context, streamID string) (int, error) {
|
|
return s.uc.Like(ctx, streamID)
|
|
}
|