core/schema/admin.graphql

192 lines
4.2 KiB
GraphQL
Raw Normal View History

2025-05-16 06:23:48 +00:00
type EnvVariable {
2025-07-01 09:18:24 +00:00
key: String!
value: String!
description: String
type: String!
isSecret: Boolean
2025-05-16 06:23:48 +00:00
}
type EnvSection {
2025-07-01 09:18:24 +00:00
name: String!
description: String
variables: [EnvVariable!]!
2025-05-16 06:23:48 +00:00
}
input EnvVariableInput {
2025-07-01 09:18:24 +00:00
key: String!
value: String!
type: String!
2025-05-16 06:23:48 +00:00
}
# Типы для управления пользователями
type AdminUserInfo {
2025-07-01 09:18:24 +00:00
id: Int!
email: String
name: String
slug: String
roles: [String!]
created_at: Int
last_seen: Int
2025-05-16 06:23:48 +00:00
}
input AdminUserUpdateInput {
2025-07-01 09:18:24 +00:00
id: Int!
email: String
name: String
slug: String
roles: [String!]
community: Int
2025-05-16 06:23:48 +00:00
}
type Role {
2025-07-01 09:18:24 +00:00
id: String!
name: String!
description: String
2025-05-16 06:23:48 +00:00
}
# Тип для пагинированного ответа пользователей
type AdminUserListResponse {
2025-07-01 09:18:24 +00:00
authors: [AdminUserInfo!]!
total: Int!
page: Int!
perPage: Int!
totalPages: Int!
2025-05-16 06:23:48 +00:00
}
2025-05-21 07:35:27 +00:00
# Общий ответ на операцию с данными об успехе и ошибке
type OperationResult {
2025-07-01 09:18:24 +00:00
success: Boolean!
error: String
2025-05-21 07:35:27 +00:00
}
2025-06-28 10:47:08 +00:00
# Типы для управления публикациями (Shout)
type AdminShoutInfo {
2025-07-01 09:18:24 +00:00
id: Int!
title: String!
slug: String!
body: String!
lead: String
subtitle: String
layout: String!
lang: String!
cover: String
cover_caption: String
media: [MediaItem]
seo: String
created_at: Int!
updated_at: Int
published_at: Int
featured_at: Int
deleted_at: Int
created_by: Author!
updated_by: Author
deleted_by: Author
community: Community!
authors: [Author]
topics: [Topic]
version_of: Int
draft: Int
stat: Stat
2025-06-28 10:47:08 +00:00
}
# Тип для пагинированного ответа публикаций
type AdminShoutListResponse {
2025-07-01 09:18:24 +00:00
shouts: [AdminShoutInfo!]!
total: Int!
page: Int!
perPage: Int!
totalPages: Int!
2025-06-28 10:47:08 +00:00
}
input AdminShoutUpdateInput {
2025-07-01 09:18:24 +00:00
id: Int!
title: String
body: String
lead: String
subtitle: String
cover: String
cover_caption: String
media: [MediaItemInput]
seo: String
published_at: Int
featured_at: Int
deleted_at: Int
2025-06-28 10:47:08 +00:00
}
2025-06-30 19:19:46 +00:00
# Тип для отображения приглашения в админ-панели
type AdminInviteInfo {
2025-07-01 09:18:24 +00:00
inviter_id: Int!
author_id: Int!
shout_id: Int!
status: InviteStatus!
inviter: Author!
author: Author!
shout: AdminShoutInfo!
created_at: Int
2025-06-30 19:19:46 +00:00
}
# Тип для пагинированного ответа приглашений
type AdminInviteListResponse {
2025-07-01 09:18:24 +00:00
invites: [AdminInviteInfo!]!
total: Int!
page: Int!
perPage: Int!
totalPages: Int!
2025-06-30 19:19:46 +00:00
}
input AdminInviteUpdateInput {
2025-07-01 09:18:24 +00:00
inviter_id: Int!
author_id: Int!
shout_id: Int!
status: InviteStatus!
2025-06-30 19:19:46 +00:00
}
2025-06-30 20:37:21 +00:00
# Входной тип для идентификации приглашения при пакетном удалении
input AdminInviteIdInput {
2025-07-01 09:18:24 +00:00
inviter_id: Int!
author_id: Int!
shout_id: Int!
2025-06-30 20:37:21 +00:00
}
2025-05-16 06:23:48 +00:00
extend type Query {
2025-07-01 09:18:24 +00:00
getEnvVariables: [EnvSection!]!
# Запросы для управления пользователями
adminGetUsers(limit: Int, offset: Int, search: String): AdminUserListResponse!
adminGetRoles: [Role!]!
# Запросы для управления публикациями
adminGetShouts(
limit: Int
offset: Int
search: String
status: String
): AdminShoutListResponse!
# Запросы для управления приглашениями
adminGetInvites(
limit: Int
offset: Int
search: String
status: String
): AdminInviteListResponse!
2025-05-16 06:23:48 +00:00
}
extend type Mutation {
2025-07-01 09:18:24 +00:00
updateEnvVariable(key: String!, value: String!): Boolean!
updateEnvVariables(variables: [EnvVariableInput!]!): Boolean!
# Мутации для управления пользователями
adminUpdateUser(user: AdminUserUpdateInput!): OperationResult!
# Мутации для управления публикациями
adminUpdateShout(shout: AdminShoutUpdateInput!): OperationResult!
adminDeleteShout(id: Int!): OperationResult!
adminRestoreShout(id: Int!): OperationResult!
# Мутации для управления приглашениями
adminCreateInvite(invite: AdminInviteUpdateInput!): OperationResult!
adminUpdateInvite(invite: AdminInviteUpdateInput!): OperationResult!
adminDeleteInvite(
inviter_id: Int!
author_id: Int!
shout_id: Int!
): OperationResult!
adminDeleteInvitesBatch(invites: [AdminInviteIdInput!]!): OperationResult!
}