syntax = "proto3"; package proto; option go_package = "./;proto"; import "google/protobuf/timestamp.proto"; service MessageService { rpc CreateChat (CreateChatRequest) returns (ChatResponse); rpc SendMessage (SendMessageRequest) returns (MessageResponse); rpc GetChat (GetChatRequest) returns (ChatResponse); rpc GetChatMessages (GetChatMessagesRequest) returns (MessagesResponse); rpc GetUserChats (GetUserChatsRequest) returns (UserChatsResponse); rpc UpdateMessageStatus (UpdateMessageStatusRequest) returns (MessageResponse); rpc StreamMessages (StreamMessagesRequest) returns (stream MessageResponse); } message CreateChatRequest { int32 user1_id = 1; int32 user2_id = 2; } message SendMessageRequest { int32 chat_id = 1; int32 sender_id = 2; string content = 3; } message GetChatRequest { int32 user1_id = 1; int32 user2_id = 2; } message GetChatMessagesRequest { int32 chat_id = 1; int32 limit = 2; int32 offset = 3; } message GetUserChatsRequest { int32 user_id = 1; } message UpdateMessageStatusRequest { int32 message_id = 1; string status = 2; int32 userId = 3; } message StreamMessagesRequest { int32 user_id = 1; } message Message { int32 id = 1; int32 chat_id = 2; int32 sender_id = 3; int32 receiver_id = 4; string content = 5; string status = 6; google.protobuf.Timestamp created_at = 7; } message Chat { int32 id = 1; int32 user1_id = 2; int32 user2_id = 3; google.protobuf.Timestamp created_at = 4; google.protobuf.Timestamp updated_at = 5; Message last_message = 6; } message MessageResponse { Message message = 1; } message MessagesResponse { repeated Message messages = 1; } message ChatResponse { Chat chat = 1; } message UserChatsResponse { repeated Chat chats = 1; }