v.0.2 Добавлено создание уведомления при подписке
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
38d91d9f10
commit
52ce331f37
26
server.go
26
server.go
@ -2,17 +2,18 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"log"
|
||||||
|
"net"
|
||||||
|
"os"
|
||||||
|
"tailly_subscribers/proto"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/jackc/pgx/v4"
|
"github.com/jackc/pgx/v4"
|
||||||
"github.com/jackc/pgx/v4/pgxpool"
|
"github.com/jackc/pgx/v4/pgxpool"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
"google.golang.org/grpc/codes"
|
"google.golang.org/grpc/codes"
|
||||||
"google.golang.org/grpc/keepalive"
|
"google.golang.org/grpc/keepalive"
|
||||||
"google.golang.org/grpc/status"
|
"google.golang.org/grpc/status"
|
||||||
"log"
|
|
||||||
"net"
|
|
||||||
"os"
|
|
||||||
"tailly_subscribers/proto"
|
|
||||||
"time"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type server struct {
|
type server struct {
|
||||||
@ -34,7 +35,6 @@ func (s *server) FollowUser(ctx context.Context, req *proto.FollowRequest) (*pro
|
|||||||
return nil, status.Error(codes.InvalidArgument, "cannot follow yourself")
|
return nil, status.Error(codes.InvalidArgument, "cannot follow yourself")
|
||||||
}
|
}
|
||||||
|
|
||||||
// ИСПРАВЛЕНИЕ: Используем QueryRow чтобы получить количество вставленных строк
|
|
||||||
var subscriptionID int32
|
var subscriptionID int32
|
||||||
err := s.db.QueryRow(ctx, `
|
err := s.db.QueryRow(ctx, `
|
||||||
INSERT INTO subscriptions (follower_id, following_id)
|
INSERT INTO subscriptions (follower_id, following_id)
|
||||||
@ -45,7 +45,6 @@ func (s *server) FollowUser(ctx context.Context, req *proto.FollowRequest) (*pro
|
|||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == pgx.ErrNoRows {
|
if err == pgx.ErrNoRows {
|
||||||
// Конфликт - подписка уже существует
|
|
||||||
return &proto.FollowResponse{
|
return &proto.FollowResponse{
|
||||||
Success: false,
|
Success: false,
|
||||||
Message: "Already following this user",
|
Message: "Already following this user",
|
||||||
@ -54,6 +53,19 @@ func (s *server) FollowUser(ctx context.Context, req *proto.FollowRequest) (*pro
|
|||||||
return nil, status.Errorf(codes.Internal, "failed to follow: %v", err)
|
return nil, status.Errorf(codes.Internal, "failed to follow: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var notificationID int32
|
||||||
|
err = s.db.QueryRow(ctx, `
|
||||||
|
INSERT INTO subscription_notifications (subscription_id)
|
||||||
|
VALUES ($1)
|
||||||
|
RETURNING id`,
|
||||||
|
subscriptionID).Scan(¬ificationID)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
s.logger.Printf("Warning: failed to create notification for subscription %d: %v", subscriptionID, err)
|
||||||
|
} else {
|
||||||
|
s.logger.Printf("Created notification %d for subscription %d", notificationID, subscriptionID)
|
||||||
|
}
|
||||||
|
|
||||||
return &proto.FollowResponse{
|
return &proto.FollowResponse{
|
||||||
Success: true,
|
Success: true,
|
||||||
Message: "Successfully followed user",
|
Message: "Successfully followed user",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user