@prisma-cms/nextjs-nexus: добавление таблицы
Топик несколько расширяет обзорное видео про вариацию prisma-cms. В видео добавляется новое поле, что далеко не впрямую экстраполируется на добавление новой таблицы в проект. Инструкция нужна для того, чтобы любой, еще не знакомый с этой технологией, понял как делать. Итак.
Задача: добавить в проект новую таблицу поста Технологии в свежий клон @prisma-cms/nextjs-nexus.
- Первым делом клон проекта https://github.com/prisma-cms/nextjs-nexus и первичный запуск. Порядок такой:
- git clone https://github.com/Fi1osof/nextjs-nexus
- yarn
- yarn dev
- подключение к БД
- yarn prisma:deploy для первичного создания таблиц БД
Здесь надо уточнить про "подключение к БД". Призма работает с четырьмя базами: MySQL, Postgres, SQLite, MongoDB. Про последнюю ничего сказать не могу, но вот остальными ситуация следующая: кроме подключенной в docker mysql базы ничего задействовать лично у меня не получилось. То есть ни mysql на хостинге (у себя на ubutu я что-то накосячил с установкой mysql и marinaDB, теперь ещё и удалить не могу:) ), ни postgres на Heroku, ни файлы SQLite не прокатили, так как для использования миграций требуется разрешение на создание shadow database - читать тут https://www.prisma.io/docs/concepts/components/prisma-migrate/shadow-database Я не разобрался, как побороть.
Здесь детально про разворачивание проекта: https://freecode.academy/topics/zapusk-testovogo-proekta-lokalno
- Добавляем в схему новую таблицу. Это сюда: https://github.com/Fi1osof/nextjs-nexus/blob/master/prisma/schema.prisma
Табличка простая, подвешенная в воздухе, без связей. И надо эту новую табличку запихать в БД:
yarn prisma:db:push
- Дальше надо типизировать в nexus Сюда https://github.com/Fi1osof/nextjs-nexus/tree/master/server/nexus/types добавляем папку Tech и файл index.ts
Не забываем добавить экспорт сюда: https://github.com/Fi1osof/nextjs-nexus/blob/master/server/nexus/types/index.ts
Для того, чтобы реализовать изменения в схеме надо "сделать миграцию"(?):
yarn prisma:migrate:create
- В процессе работы со схемой приходится постоянно обновлять БД, что приводит к обнулению данных, а это не удобно (каждый раз заново заводить). Для решения этого вопроса в prisma есть посев данных, то есть автоматическое наполнение таблиц данными. В @prisma-cms/nextjs-nexus метод используется, можем его расширить. Для этого изменим файл https://github.com/Fi1osof/nextjs-nexus/blob/master/prisma/seed.ts
Файл с данными:
Команда на посев:
yarn prisma:seed
- Последнее, что не хватает для работы с данными - добавить сами запросы. Сюда https://github.com/Fi1osof/nextjs-nexus/tree/master/src/gql добавляем файл с простым запросом вывода всех технологий Tech.graphql
Теперь нужно провести "генерацию типов"(?):
yarn generate:types
Теперь можно получать данные.
Вот проект на github с текущими изменениями: https://github.com/linklib/resume/tree/840d329b51ffd95f4563076cec45b59f97dc475e