Добрых суток. Подскажите, как можно реализовать связанные мутации в GraphQL?
Для изучения GraphQL решил сделать для себя портфолио и как раз выучить новый инструмент. Особых сложностей не возникало до момента, когда мне понадобилось добавить запись в портфолио и привязанные к ней изображения.
Добавляемая запись в портфолио имеет связанные сущности, которые представлены в виде доп. изображений, у них есть заголовок, описание и пару тегов. Изображения, как и сама запись портфолио, находятся в разных таблицах и связаны по ID записи портфолио.
Вот тут и возникает вопрос: как правильно добавить запись с доп. изображениями в одной мутации и связать их, и как сделать это правильно?
Поискал по форумам и внятного мануала я так и не нашел. У меня есть пару идей как это сделать: использовать subscriptions или выполнять мутации через Promise. Предполагаю, что первый способ является верным, но все равно есть сомнения. Подскажите, как правильно нужно работать с подобными мутациями. Большое спасибо за внимание.
В разработке использую GraphQL, Apollo, Vue и Laravel.
Структура таблиц портфолио:
CREATE TABLE IF NOT EXISTS `portfolio_works` (
`id` int(10) unsigned NOT NULL,
`portfolio_id` int(10) unsigned NOT NULL,
`title` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`image` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
`description` text COLLATE utf8mb4_unicode_ci,
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `portfolio_work_images` (
`id` int(10) unsigned NOT NULL,
`portfolio_id` int(10) unsigned NOT NULL,
`portfolio_work_id` int(10) unsigned NOT NULL,
`image` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
`title` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;