v.0.0.3.9 правки в обновление статуса сообщения
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
b65aba852c
commit
0bff808436
@ -294,6 +294,7 @@ type UpdateMessageStatusRequest struct {
|
|||||||
state protoimpl.MessageState `protogen:"open.v1"`
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
MessageId int32 `protobuf:"varint,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"`
|
MessageId int32 `protobuf:"varint,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"`
|
||||||
Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
|
Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
|
||||||
|
UserId int32 `protobuf:"varint,3,opt,name=userId,proto3" json:"userId,omitempty"`
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
}
|
}
|
||||||
@ -342,6 +343,13 @@ func (x *UpdateMessageStatusRequest) GetStatus() string {
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *UpdateMessageStatusRequest) GetUserId() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.UserId
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
type StreamMessagesRequest struct {
|
type StreamMessagesRequest struct {
|
||||||
state protoimpl.MessageState `protogen:"open.v1"`
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
UserId int32 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
|
UserId int32 `protobuf:"varint,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"`
|
||||||
@ -758,11 +766,12 @@ const file_messages_proto_rawDesc = "" +
|
|||||||
"\x05limit\x18\x02 \x01(\x05R\x05limit\x12\x16\n" +
|
"\x05limit\x18\x02 \x01(\x05R\x05limit\x12\x16\n" +
|
||||||
"\x06offset\x18\x03 \x01(\x05R\x06offset\".\n" +
|
"\x06offset\x18\x03 \x01(\x05R\x06offset\".\n" +
|
||||||
"\x13GetUserChatsRequest\x12\x17\n" +
|
"\x13GetUserChatsRequest\x12\x17\n" +
|
||||||
"\auser_id\x18\x01 \x01(\x05R\x06userId\"S\n" +
|
"\auser_id\x18\x01 \x01(\x05R\x06userId\"k\n" +
|
||||||
"\x1aUpdateMessageStatusRequest\x12\x1d\n" +
|
"\x1aUpdateMessageStatusRequest\x12\x1d\n" +
|
||||||
"\n" +
|
"\n" +
|
||||||
"message_id\x18\x01 \x01(\x05R\tmessageId\x12\x16\n" +
|
"message_id\x18\x01 \x01(\x05R\tmessageId\x12\x16\n" +
|
||||||
"\x06status\x18\x02 \x01(\tR\x06status\"0\n" +
|
"\x06status\x18\x02 \x01(\tR\x06status\x12\x16\n" +
|
||||||
|
"\x06userId\x18\x03 \x01(\x05R\x06userId\"0\n" +
|
||||||
"\x15StreamMessagesRequest\x12\x17\n" +
|
"\x15StreamMessagesRequest\x12\x17\n" +
|
||||||
"\auser_id\x18\x01 \x01(\x05R\x06userId\"\xdd\x01\n" +
|
"\auser_id\x18\x01 \x01(\x05R\x06userId\"\xdd\x01\n" +
|
||||||
"\aMessage\x12\x0e\n" +
|
"\aMessage\x12\x0e\n" +
|
||||||
|
|||||||
@ -45,6 +45,7 @@ message GetUserChatsRequest {
|
|||||||
message UpdateMessageStatusRequest {
|
message UpdateMessageStatusRequest {
|
||||||
int32 message_id = 1;
|
int32 message_id = 1;
|
||||||
string status = 2;
|
string status = 2;
|
||||||
|
int32 userId = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message StreamMessagesRequest {
|
message StreamMessagesRequest {
|
||||||
|
|||||||
53
server.go
53
server.go
@ -390,35 +390,34 @@ func (s *server) GetUserChats(ctx context.Context, req *proto.GetUserChatsReques
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *server) UpdateMessageStatus(ctx context.Context, req *proto.UpdateMessageStatusRequest) (*proto.MessageResponse, error) {
|
func (s *server) UpdateMessageStatus(ctx context.Context, req *proto.UpdateMessageStatusRequest) (*proto.MessageResponse, error) {
|
||||||
s.logRequest("UpdateMessageStatus", req)
|
// Если MessageId = 0, обновляем все сообщения для пользователя
|
||||||
defer func(start time.Time) {
|
if req.MessageId == 0 {
|
||||||
s.logger.Printf("UpdateMessageStatus execution time: %v", time.Since(start))
|
_, err := s.db.Exec(ctx, `
|
||||||
}(time.Now())
|
UPDATE messages
|
||||||
|
SET status = $1
|
||||||
s.logger.Printf("Updating message status: message_id=%d, status=%s", req.MessageId, req.Status)
|
WHERE receiver_id = $2 AND status = 'SENT'
|
||||||
var message proto.Message
|
`, req.Status, req.UserId)
|
||||||
var createdAt time.Time
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to bulk update status: %w", err)
|
||||||
err := s.db.QueryRow(ctx, `
|
}
|
||||||
UPDATE messages
|
return &proto.MessageResponse{}, nil
|
||||||
SET status = $1
|
|
||||||
WHERE id = $2
|
|
||||||
RETURNING id, chat_id, sender_id, receiver_id, content, status, created_at
|
|
||||||
`, req.Status, req.MessageId).Scan(
|
|
||||||
&message.Id, &message.ChatId, &message.SenderId, &message.ReceiverId, &message.Content, &message.Status, &createdAt,
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
s.logger.Printf("Failed to update message status: %v", err)
|
|
||||||
return nil, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
message.CreatedAt = timestamppb.New(createdAt)
|
// Обычное обновление одного сообщения
|
||||||
|
var msg proto.Message
|
||||||
s.logger.Printf("Successfully updated message status: message_id=%d, new_status=%s",
|
err := s.db.QueryRow(ctx, `
|
||||||
message.Id, message.Status)
|
UPDATE messages
|
||||||
resp := &proto.MessageResponse{Message: &message}
|
SET status = $1
|
||||||
s.logResponse("UpdateMessageStatus", resp, nil)
|
WHERE id = $2
|
||||||
return resp, nil
|
RETURNING id, chat_id, sender_id, receiver_id, content, status, created_at
|
||||||
|
`, req.Status, req.MessageId).Scan(
|
||||||
|
&msg.Id, &msg.ChatId, &msg.SenderId, &msg.ReceiverId,
|
||||||
|
&msg.Content, &msg.Status, &msg.CreatedAt,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("failed to update status: %w", err)
|
||||||
|
}
|
||||||
|
return &proto.MessageResponse{Message: &msg}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *server) StreamMessages(req *proto.StreamMessagesRequest, stream proto.MessageService_StreamMessagesServer) error {
|
func (s *server) StreamMessages(req *proto.StreamMessagesRequest, stream proto.MessageService_StreamMessagesServer) error {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user