From 0cf6865b0d18e7a5294667979b2f0a972d32be9f Mon Sep 17 00:00:00 2001 From: Vadim Date: Sun, 1 Mar 2026 22:00:47 +0300 Subject: [PATCH] wip --- proto/message.proto | 1 + src/grpc/client.ts | 5 +++-- src/index.ts | 18 +++++++++++------- src/types/types.ts | 20 ++++++++++++-------- 4 files changed, 27 insertions(+), 17 deletions(-) diff --git a/proto/message.proto b/proto/message.proto index 995c6c2..1873bef 100644 --- a/proto/message.proto +++ b/proto/message.proto @@ -224,6 +224,7 @@ message ListMessageRequest { string chat_id = 2 [(validate.rules).string = { uuid: true, }]; + int32 user_id = 3 [(validate.rules).int32.gt = 0]; } message ListMessageResponse { diff --git a/src/grpc/client.ts b/src/grpc/client.ts index 4137e6c..b4f4c93 100644 --- a/src/grpc/client.ts +++ b/src/grpc/client.ts @@ -27,8 +27,8 @@ interface GetUserByIDDto { } interface ListUserDto { - page: number - iser_ids: number[] + page?: number + user_ids?: number[] } interface CreateChatDto { @@ -72,6 +72,7 @@ interface GetMessageDto { interface ListMessageDto { page: number chat_id: string + user_id: number } interface VersionDto {} diff --git a/src/index.ts b/src/index.ts index bfbfd64..fbf7a43 100644 --- a/src/index.ts +++ b/src/index.ts @@ -52,27 +52,31 @@ const server = Bun.serve({ try { if (typeof message === 'string') { const o = JSON.parse(message) as WsData - if (!o) { - console.log('wrong message') - return + if (!o) return + + if (o.type === 'CREATE_CHAT') { + const chat = await client.createChat({ users: [{ user_id: o.data.userId }, { user_id: ws.data.userId }] }) + ws.send(JSON.stringify({ type: 'CHATS', ...chat })) } if (o.type === 'CREATE_MESSAGE') { - console.log('create') const messageResponse = await client.createMessage({ chat_id: o.data.chat_id, user_id: ws.data.userId, text: o.data.text, }) - server.publish(o.data.chat_id, JSON.stringify({ type: 'MESSAGE', ...messageResponse })) } if (o.type === 'GET_MESSAGES') { - console.log('GET_MESSAGES') - const messages = await client.listMessage({ chat_id: o.data.chat_id, page: 1 }) + const messages = await client.listMessage({ user_id: ws.data.userId, chat_id: o.data.chat_id, page: 1 }) server.publish(o.data.chat_id, JSON.stringify({ type: 'MESSAGES', ...messages })) } + + if (o.type === 'GET_USERS') { + const users = await client.listUser({}) + ws.send(JSON.stringify({ type: 'USERS', ...users })) + } } } catch (error) { ws.send(JSON.stringify({ message: 'data error' })) diff --git a/src/types/types.ts b/src/types/types.ts index 449c4c7..44236aa 100644 --- a/src/types/types.ts +++ b/src/types/types.ts @@ -33,15 +33,19 @@ interface CreateMessage { } } -interface UserData { - type: 'user' - id: number +interface ListUsers { + type: 'GET_USERS' + data: { + page?: number + user_ids?: number[] + } } -interface MessageData { - type: 'message' - id: number - text: string +interface CreateChat { + type: 'CREATE_CHAT' + data: { + userId: number + } } -export type WsData = ListMessages | CreateMessage +export type WsData = ListMessages | CreateMessage | ListUsers | CreateChat