This commit is contained in:
parent
31a8536d27
commit
f33241b84f
|
@ -26,6 +26,13 @@ input ChatInput {
|
||||||
description: String
|
description: String
|
||||||
}
|
}
|
||||||
|
|
||||||
|
input MessageInput {
|
||||||
|
id: String!
|
||||||
|
chat_id: String!
|
||||||
|
body: String
|
||||||
|
seen: Boolean
|
||||||
|
}
|
||||||
|
|
||||||
type ChatResult {
|
type ChatResult {
|
||||||
error: String
|
error: String
|
||||||
chat: Chat
|
chat: Chat
|
||||||
|
@ -39,11 +46,11 @@ type ChatResult {
|
||||||
type Mutation {
|
type Mutation {
|
||||||
# inbox
|
# inbox
|
||||||
createChat(title: String, members: [Int]!): ChatResult!
|
createChat(title: String, members: [Int]!): ChatResult!
|
||||||
updateChat(chat_id: ChatInput!): ChatResult!
|
updateChat(chat: ChatInput!): ChatResult!
|
||||||
deleteChat(chat_id: String!): ChatResult!
|
deleteChat(chat_id: String!): ChatResult!
|
||||||
|
|
||||||
createMessage(chat_id: String!, body: String!, reply_to: Int): ChatResult!
|
createMessage(chat_id: String!, body: String!, reply_to: Int): ChatResult!
|
||||||
updateMessage(chat_id: String!, message_id: Int!, body: String!): ChatResult!
|
updateMessage(message: MessageInput!): ChatResult!
|
||||||
deleteMessage(chat_id: String!, message_id: Int!): ChatResult!
|
deleteMessage(chat_id: String!, message_id: Int!): ChatResult!
|
||||||
markAsRead(chat_id: String!, message_id: Int!): ChatResult!
|
markAsRead(chat_id: String!, message_id: Int!): ChatResult!
|
||||||
|
|
||||||
|
@ -69,27 +76,25 @@ type Query {
|
||||||
}
|
}
|
||||||
|
|
||||||
type Message {
|
type Message {
|
||||||
|
id: Int!
|
||||||
author: Int!
|
author: Int!
|
||||||
|
created_at: Int!
|
||||||
chat_id: String!
|
chat_id: String!
|
||||||
body: String!
|
body: String!
|
||||||
created_at: Int!
|
|
||||||
id: Int!
|
|
||||||
reply_to: Int
|
|
||||||
updated_at: Int
|
updated_at: Int
|
||||||
|
reply_to: Int
|
||||||
seen: Boolean
|
seen: Boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
type Chat {
|
type Chat {
|
||||||
id: String!
|
id: String!
|
||||||
|
created_by: Int! # member_id
|
||||||
created_at: Int!
|
created_at: Int!
|
||||||
created_by: Int!
|
|
||||||
updated_at: Int!
|
|
||||||
title: String
|
|
||||||
description: String
|
|
||||||
users: [Int]
|
|
||||||
members: [ChatMember]
|
members: [ChatMember]
|
||||||
admins: [Int]
|
admins: [Int]
|
||||||
|
updated_at: Int
|
||||||
|
title: String
|
||||||
|
description: String
|
||||||
messages: [Message]
|
messages: [Message]
|
||||||
unread: Int
|
unread: Int
|
||||||
private: Boolean
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,13 +78,19 @@ async def create_message(_, info, chat_id: str, body: str, reply_to=None):
|
||||||
|
|
||||||
@mutation.field("updateMessage")
|
@mutation.field("updateMessage")
|
||||||
@login_required
|
@login_required
|
||||||
async def update_message(_, info, chat_id: str, message_id: int, body: str):
|
async def update_message(_, info, message):
|
||||||
author_id = info.context["author_id"]
|
author_id = info.context["author_id"]
|
||||||
|
chat_id = message.get("chat_id")
|
||||||
|
chat_str = ""
|
||||||
|
if chat_id:
|
||||||
chat_str = await redis.execute("GET", f"chats/{chat_id}")
|
chat_str = await redis.execute("GET", f"chats/{chat_id}")
|
||||||
if not chat_str:
|
if not chat_str:
|
||||||
return {"error": "chat not exist"}
|
return {"error": "chat not exist"}
|
||||||
|
|
||||||
|
message_id = message.get("id")
|
||||||
|
body = message.get("body")
|
||||||
|
|
||||||
|
if message_id:
|
||||||
message = await redis.execute("GET", f"chats/{chat_id}/messages/{message_id}")
|
message = await redis.execute("GET", f"chats/{chat_id}/messages/{message_id}")
|
||||||
if not message:
|
if not message:
|
||||||
return {"error": "message not exist"}
|
return {"error": "message not exist"}
|
||||||
|
@ -93,17 +99,19 @@ async def update_message(_, info, chat_id: str, message_id: int, body: str):
|
||||||
if message["author"] != author_id:
|
if message["author"] != author_id:
|
||||||
return {"error": "access denied"}
|
return {"error": "access denied"}
|
||||||
|
|
||||||
|
if body:
|
||||||
message["body"] = body
|
message["body"] = body
|
||||||
message["updated_at"] = int(datetime.now(tz=timezone.utc).timestamp())
|
message["updated_at"] = int(datetime.now(tz=timezone.utc).timestamp())
|
||||||
|
|
||||||
await redis.execute("SET", f"chats/{chat_id}/messages/{message_id}", json.dumps(message))
|
await redis.execute("SET", f"chats/{chat_id}/messages/{message_id}", json.dumps(message))
|
||||||
|
|
||||||
|
|
||||||
# Отправка уведомления
|
# Отправка уведомления
|
||||||
message["chat_id"] = chat_id
|
message["chat_id"] = chat_id
|
||||||
await notify_message(message, "update")
|
await notify_message(message, "update")
|
||||||
|
|
||||||
return { "message": message, "error": None }
|
return { "message": message, "error": None }
|
||||||
|
else:
|
||||||
|
return { "message": message, "error": "cannot update, no message_id" }
|
||||||
|
|
||||||
|
|
||||||
@mutation.field("deleteMessage")
|
@mutation.field("deleteMessage")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user