madipo2611 a5a90bed7e v0.0.1
2025-04-28 15:14:02 +03:00

117 lines
3.5 KiB
GraphQL

# Тип пользователя
type User {
id: ID! # Уникальный идентификатор
username: String! # Имя пользователя
email: String! # Email (уникальный)
createdAt: String! # Дата создания
updatedAt: String! # Дата обновления
}
# Пост в блоге
type Post {
id: ID! # Уникальный идентификатор
title: String! # Заголовок поста
content: String! # Содержание поста
author: User! # Автор поста
comments: [Comment!]! # Комментарии к посту
likes: [Like!]! # Лайки к посту
likesCount: Int!
isLiked: Boolean!
createdAt: String! # Дата создания
updatedAt: String! # Дата обновления
}
# Комментарий к посту
type Comment {
id: ID! # Уникальный идентификатор
content: String! # Текст комментария
post: Post! # Пост, к которому относится
author: User! # Автор комментария
createdAt: String! # Дата создания
updatedAt: String! # Дата обновления
}
# Лайк к посту
type Like {
id: ID! # Уникальный идентификатор
post: Post! # Пост, который лайкнули
user: User! # Пользователь, который поставил лайк
createdAt: String! # Дата создания
}
# Токены для аутентификации
type Tokens {
accessToken: String! # Access токен (короткоживущий)
refreshToken: String! # Refresh токен (долгоживущий)
}
type Message {
id: ID!
sender: User!
receiver: User!
content: String!
createdAt: String!
status: String!
}
type ChatSession {
user: User!
lastMessage: Message!
unreadCount: Int!
}
type Subscription {
messageReceived: Message!
}
input RegisterInput {
username: String!
email: String!
password: String!
}
input LoginInput {
email: String!
password: String!
}
# Запросы (получение данных)
type Query {
me: User! # Получить текущего пользователя
post(id: ID!): Post! # Получить пост по ID
posts: [Post!]! # Получить все посты
user(id: ID!): User! # Получить пользователя по ID
getChatHistory(userId: ID!): [Message!]!
getUserChats: [ChatSession!]!
}
# Мутации (изменение данных)
type Mutation {
# Регистрация нового пользователя
register(input: RegisterInput!): User!
# Вход в систему
login(input: LoginInput!): Tokens!
# Обновление токенов
refreshTokens(refreshToken: String!): Tokens!
# Создание поста
createPost(title: String!, content: String!): Post!
# Создание комментария
createComment(postId: ID!, content: String!): Comment!
# Лайк поста
likePost(postId: ID!): Like!
# Удаление лайка
unlikePost(postId: ID!): Boolean!
updateProfile(username: String!, email: String!): User!
changePassword(oldPassword: String!, newPassword: String!): Boolean!
sendMessage(receiverId: ID!, content: String!): Message!
markAsRead(messageId: ID!): Boolean!
}