Interactive feed provider

This commit is contained in:
2025-03-15 13:37:43 +08:00
parent ee4e7a58fe
commit 17c280ddf7
7 changed files with 71 additions and 7 deletions

31
pkg/internal/grpc/feed.go Normal file
View File

@ -0,0 +1,31 @@
package grpc
import (
"context"
iproto "git.solsynth.dev/hypernet/interactive/pkg/proto"
"git.solsynth.dev/hypernet/nexus/pkg/nex"
"git.solsynth.dev/hypernet/reader/pkg/internal/models"
"git.solsynth.dev/hypernet/reader/pkg/internal/services"
"github.com/samber/lo"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
func (v *Server) GetFeed(_ context.Context, in *iproto.GetFeedRequest) (*iproto.GetFeedResponse, error) {
limit := int(in.GetLimit())
articles, err := services.GetTodayNewsRandomly(limit, false)
if err != nil {
return nil, status.Error(codes.Internal, err.Error())
}
return &iproto.GetFeedResponse{
Items: lo.Map(articles, func(item models.NewsArticle, _ int) *iproto.FeedItem {
return &iproto.FeedItem{
Type: "reader.news",
Content: nex.EncodeMap(item),
CreatedAt: uint64(item.CreatedAt.Unix()),
}
}),
}, nil
}

View File

@ -3,6 +3,7 @@ package grpc
import (
"net"
iproto "git.solsynth.dev/hypernet/interactive/pkg/proto"
"git.solsynth.dev/hypernet/nexus/pkg/proto"
"github.com/spf13/viper"
"google.golang.org/grpc"
@ -12,6 +13,7 @@ import (
type Server struct {
proto.UnimplementedDirectoryServiceServer
iproto.UnimplementedFeedServiceServer
health.UnimplementedHealthServer
srv *grpc.Server
@ -23,6 +25,7 @@ func NewGrpc() *Server {
}
proto.RegisterDirectoryServiceServer(server.srv, server)
iproto.RegisterFeedServiceServer(server.srv, server)
health.RegisterHealthServer(server.srv, server)
reflection.Register(server.srv)