Удален файл с тестовым заданием по системе управления сотрудниками. Обновлены зависимости в package.json и package-lock.json, добавлен новый пакет react-resizable-panels. Внесены изменения в компоненты для улучшения работы боковой панели и отображения дат. Добавлены новые функции для обработки дат в формате DateTime в GraphQL.
This commit is contained in:
@ -137,6 +137,30 @@ const JSONScalar = new GraphQLScalarType({
|
||||
}
|
||||
})
|
||||
|
||||
// Скалярный тип для DateTime
|
||||
const DateTimeScalar = new GraphQLScalarType({
|
||||
name: 'DateTime',
|
||||
description: 'DateTime custom scalar type',
|
||||
serialize(value: unknown) {
|
||||
if (value instanceof Date) {
|
||||
return value.toISOString() // значение отправляется клиенту как ISO строка
|
||||
}
|
||||
return value
|
||||
},
|
||||
parseValue(value: unknown) {
|
||||
if (typeof value === 'string') {
|
||||
return new Date(value) // значение получено от клиента, парсим как дату
|
||||
}
|
||||
return value
|
||||
},
|
||||
parseLiteral(ast) {
|
||||
if (ast.kind === Kind.STRING) {
|
||||
return new Date(ast.value) // AST значение как дата
|
||||
}
|
||||
return null
|
||||
}
|
||||
})
|
||||
|
||||
function parseLiteral(ast: unknown): unknown {
|
||||
const astNode = ast as { kind: string; value?: unknown; fields?: unknown[]; values?: unknown[] }
|
||||
|
||||
@ -166,6 +190,7 @@ function parseLiteral(ast: unknown): unknown {
|
||||
|
||||
export const resolvers = {
|
||||
JSON: JSONScalar,
|
||||
DateTime: DateTimeScalar,
|
||||
|
||||
Query: {
|
||||
me: async (_: unknown, __: unknown, context: Context) => {
|
||||
@ -643,7 +668,7 @@ export const resolvers = {
|
||||
|
||||
// Все категории
|
||||
categories: async (_: unknown, __: unknown, context: Context) => {
|
||||
if (!context.user) {
|
||||
if (!context.user && !context.admin) {
|
||||
throw new GraphQLError('Требуется авторизация', {
|
||||
extensions: { code: 'UNAUTHENTICATED' }
|
||||
})
|
||||
@ -2735,7 +2760,7 @@ export const resolvers = {
|
||||
|
||||
// Создать категорию
|
||||
createCategory: async (_: unknown, args: { input: { name: string } }, context: Context) => {
|
||||
if (!context.user) {
|
||||
if (!context.user && !context.admin) {
|
||||
throw new GraphQLError('Требуется авторизация', {
|
||||
extensions: { code: 'UNAUTHENTICATED' }
|
||||
})
|
||||
@ -2776,7 +2801,7 @@ export const resolvers = {
|
||||
|
||||
// Обновить категорию
|
||||
updateCategory: async (_: unknown, args: { id: string; input: { name: string } }, context: Context) => {
|
||||
if (!context.user) {
|
||||
if (!context.user && !context.admin) {
|
||||
throw new GraphQLError('Требуется авторизация', {
|
||||
extensions: { code: 'UNAUTHENTICATED' }
|
||||
})
|
||||
@ -2832,7 +2857,7 @@ export const resolvers = {
|
||||
|
||||
// Удалить категорию
|
||||
deleteCategory: async (_: unknown, args: { id: string }, context: Context) => {
|
||||
if (!context.user) {
|
||||
if (!context.user && !context.admin) {
|
||||
throw new GraphQLError('Требуется авторизация', {
|
||||
extensions: { code: 'UNAUTHENTICATED' }
|
||||
})
|
||||
|
Reference in New Issue
Block a user