core/schema/admin.graphql

170 lines
4.0 KiB
GraphQL
Raw Normal View History

2025-05-16 06:23:48 +00:00
type EnvVariable {
key: String!
value: String!
description: String
type: String!
isSecret: Boolean
}
type EnvSection {
name: String!
description: String
variables: [EnvVariable!]!
}
input EnvVariableInput {
key: String!
value: String!
type: String!
}
# Типы для управления пользователями
type AdminUserInfo {
id: Int!
email: String
name: String
slug: String
roles: [String!]
created_at: Int
last_seen: Int
}
input AdminUserUpdateInput {
id: Int!
2025-06-30 18:25:26 +00:00
email: String
name: String
slug: String
2025-05-16 06:23:48 +00:00
roles: [String!]
2025-05-21 07:35:27 +00:00
community: Int
2025-05-16 06:23:48 +00:00
}
type Role {
id: String!
name: String!
description: String
}
# Тип для пагинированного ответа пользователей
type AdminUserListResponse {
2025-06-30 18:25:26 +00:00
authors: [AdminUserInfo!]!
2025-05-16 06:23:48 +00:00
total: Int!
page: Int!
perPage: Int!
totalPages: Int!
}
2025-05-21 07:35:27 +00:00
# Общий ответ на операцию с данными об успехе и ошибке
type OperationResult {
success: Boolean!
error: String
}
2025-06-28 10:47:08 +00:00
# Типы для управления публикациями (Shout)
type AdminShoutInfo {
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
}
# Тип для пагинированного ответа публикаций
type AdminShoutListResponse {
shouts: [AdminShoutInfo!]!
total: Int!
page: Int!
perPage: Int!
totalPages: Int!
}
input AdminShoutUpdateInput {
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-30 19:19:46 +00:00
# Тип для отображения приглашения в админ-панели
type AdminInviteInfo {
inviter_id: Int!
author_id: Int!
shout_id: Int!
status: InviteStatus!
inviter: Author!
author: Author!
shout: AdminShoutInfo!
created_at: Int
}
# Тип для пагинированного ответа приглашений
type AdminInviteListResponse {
invites: [AdminInviteInfo!]!
total: Int!
page: Int!
perPage: Int!
totalPages: Int!
}
input AdminInviteUpdateInput {
inviter_id: Int!
author_id: Int!
shout_id: Int!
status: InviteStatus!
}
2025-05-16 06:23:48 +00:00
extend type Query {
getEnvVariables: [EnvSection!]!
# Запросы для управления пользователями
adminGetUsers(limit: Int, offset: Int, search: String): AdminUserListResponse!
adminGetRoles: [Role!]!
2025-06-28 10:47:08 +00:00
# Запросы для управления публикациями
adminGetShouts(limit: Int, offset: Int, search: String, status: String): AdminShoutListResponse!
2025-06-30 19:19:46 +00:00
# Запросы для управления приглашениями
adminGetInvites(limit: Int, offset: Int, search: String, status: String): AdminInviteListResponse!
2025-05-16 06:23:48 +00:00
}
extend type Mutation {
updateEnvVariable(key: String!, value: String!): Boolean!
updateEnvVariables(variables: [EnvVariableInput!]!): Boolean!
2025-05-16 06:23:48 +00:00
# Мутации для управления пользователями
2025-05-21 07:35:27 +00:00
adminUpdateUser(user: AdminUserUpdateInput!): OperationResult!
2025-06-28 10:47:08 +00:00
# Мутации для управления публикациями
adminUpdateShout(shout: AdminShoutUpdateInput!): OperationResult!
adminDeleteShout(id: Int!): OperationResult!
adminRestoreShout(id: Int!): OperationResult!
2025-06-30 19:19:46 +00:00
# Мутации для управления приглашениями
adminCreateInvite(invite: AdminInviteUpdateInput!): OperationResult!
adminUpdateInvite(invite: AdminInviteUpdateInput!): OperationResult!
adminDeleteInvite(inviter_id: Int!, author_id: Int!, shout_id: Int!): OperationResult!
}