Добавлены новые разделы в README.md для работы с базой данных, включая команды и информацию о категориях. Обновлены компоненты UserSettings для улучшения обработки телефонных номеров, добавлена возможность оставлять поле WhatsApp пустым. Реализованы новые мутации для управления категориями в GraphQL, включая создание, обновление и удаление категорий с проверками на уникальность и наличие товаров.
This commit is contained in:
@ -5046,6 +5046,139 @@ export const resolvers = {
|
||||
},
|
||||
};
|
||||
|
||||
// Мутации для категорий
|
||||
const categoriesMutations = {
|
||||
// Создать категорию
|
||||
createCategory: async (
|
||||
_: unknown,
|
||||
args: { input: { name: string } }
|
||||
) => {
|
||||
try {
|
||||
// Проверяем есть ли уже категория с таким именем
|
||||
const existingCategory = await prisma.category.findUnique({
|
||||
where: { name: args.input.name }
|
||||
});
|
||||
|
||||
if (existingCategory) {
|
||||
return {
|
||||
success: false,
|
||||
message: 'Категория с таким названием уже существует'
|
||||
};
|
||||
}
|
||||
|
||||
const category = await prisma.category.create({
|
||||
data: {
|
||||
name: args.input.name
|
||||
}
|
||||
});
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: 'Категория успешно создана',
|
||||
category
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Ошибка создания категории:', error);
|
||||
return {
|
||||
success: false,
|
||||
message: 'Ошибка при создании категории'
|
||||
};
|
||||
}
|
||||
},
|
||||
|
||||
// Обновить категорию
|
||||
updateCategory: async (
|
||||
_: unknown,
|
||||
args: { id: string, input: { name: string } }
|
||||
) => {
|
||||
try {
|
||||
// Проверяем существует ли категория
|
||||
const existingCategory = await prisma.category.findUnique({
|
||||
where: { id: args.id }
|
||||
});
|
||||
|
||||
if (!existingCategory) {
|
||||
return {
|
||||
success: false,
|
||||
message: 'Категория не найдена'
|
||||
};
|
||||
}
|
||||
|
||||
// Проверяем не занято ли имя другой категорией
|
||||
const duplicateCategory = await prisma.category.findFirst({
|
||||
where: {
|
||||
name: args.input.name,
|
||||
id: { not: args.id }
|
||||
}
|
||||
});
|
||||
|
||||
if (duplicateCategory) {
|
||||
return {
|
||||
success: false,
|
||||
message: 'Категория с таким названием уже существует'
|
||||
};
|
||||
}
|
||||
|
||||
const category = await prisma.category.update({
|
||||
where: { id: args.id },
|
||||
data: {
|
||||
name: args.input.name
|
||||
}
|
||||
});
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: 'Категория успешно обновлена',
|
||||
category
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Ошибка обновления категории:', error);
|
||||
return {
|
||||
success: false,
|
||||
message: 'Ошибка при обновлении категории'
|
||||
};
|
||||
}
|
||||
},
|
||||
|
||||
// Удалить категорию
|
||||
deleteCategory: async (
|
||||
_: unknown,
|
||||
args: { id: string }
|
||||
) => {
|
||||
try {
|
||||
// Проверяем существует ли категория
|
||||
const existingCategory = await prisma.category.findUnique({
|
||||
where: { id: args.id }
|
||||
});
|
||||
|
||||
if (!existingCategory) {
|
||||
throw new GraphQLError('Категория не найдена');
|
||||
}
|
||||
|
||||
// Проверяем есть ли товары в этой категории
|
||||
const productsCount = await prisma.product.count({
|
||||
where: { categoryId: args.id }
|
||||
});
|
||||
|
||||
if (productsCount > 0) {
|
||||
throw new GraphQLError('Нельзя удалить категорию, в которой есть товары');
|
||||
}
|
||||
|
||||
await prisma.category.delete({
|
||||
where: { id: args.id }
|
||||
});
|
||||
|
||||
return true;
|
||||
} catch (error) {
|
||||
console.error('Ошибка удаления категории:', error);
|
||||
if (error instanceof GraphQLError) {
|
||||
throw error;
|
||||
}
|
||||
throw new GraphQLError('Ошибка при удалении категории');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Логистические мутации
|
||||
const logisticsMutations = {
|
||||
// Создать логистический маршрут
|
||||
@ -5228,9 +5361,10 @@ const logisticsMutations = {
|
||||
},
|
||||
};
|
||||
|
||||
// Добавляем логистические мутации к основным резолверам
|
||||
// Добавляем дополнительные мутации к основным резолверам
|
||||
resolvers.Mutation = {
|
||||
...resolvers.Mutation,
|
||||
...categoriesMutations,
|
||||
...logisticsMutations,
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user