core/schema/admin.graphql
Untone 6c95b0575a
All checks were successful
Deploy on push / deploy (push) Successful in 7s
invites-fix2
2025-06-30 23:37:21 +03:00

178 lines
4.2 KiB
GraphQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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!
email: String
name: String
slug: String
roles: [String!]
community: Int
}
type Role {
id: String!
name: String!
description: String
}
# Тип для пагинированного ответа пользователей
type AdminUserListResponse {
authors: [AdminUserInfo!]!
total: Int!
page: Int!
perPage: Int!
totalPages: Int!
}
# Общий ответ на операцию с данными об успехе и ошибке
type OperationResult {
success: Boolean!
error: String
}
# Типы для управления публикациями (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
}
# Тип для отображения приглашения в админ-панели
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!
}
# Входной тип для идентификации приглашения при пакетном удалении
input AdminInviteIdInput {
inviter_id: Int!
author_id: Int!
shout_id: Int!
}
extend type Query {
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!
}
extend type Mutation {
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!
}