@prisma-cms/nextjs-nexus: добавление таблицы

Топик несколько расширяет обзорное видео про вариацию prisma-cms. В видео добавляется новое поле, что далеко не впрямую экстраполируется на добавление новой таблицы в проект. Инструкция нужна для того, чтобы любой, еще не знакомый с этой технологией, понял как делать. Итак.

Задача: добавить в проект новую таблицу поста Технологии в свежий клон @prisma-cms/nextjs-nexus.

  1. Первым делом клон проекта https://github.com/prisma-cms/nextjs-nexus и первичный запуск. Порядок такой:

Здесь надо уточнить про "подключение к БД". Призма работает с четырьмя базами: 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

  1. Добавляем в схему новую таблицу. Это сюда: https://github.com/Fi1osof/nextjs-nexus/blob/master/prisma/schema.prisma

Табличка простая, подвешенная в воздухе, без связей. И надо эту новую табличку запихать в БД:

yarn prisma:db:push
  1. Дальше надо типизировать в 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
  1. В процессе работы со схемой приходится постоянно обновлять БД, что приводит к обнулению данных, а это не удобно (каждый раз заново заводить). Для решения этого вопроса в prisma есть посев данных, то есть автоматическое наполнение таблиц данными. В @prisma-cms/nextjs-nexus метод используется, можем его расширить. Для этого изменим файл https://github.com/Fi1osof/nextjs-nexus/blob/master/prisma/seed.ts

Файл с данными:

Команда на посев:

yarn prisma:seed
  1. Последнее, что не хватает для работы с данными - добавить сами запросы. Сюда https://github.com/Fi1osof/nextjs-nexus/tree/master/src/gql добавляем файл с простым запросом вывода всех технологий Tech.graphql

Теперь нужно провести "генерацию типов"(?):

yarn generate:types

Теперь можно получать данные.

Вот проект на github с текущими изменениями: https://github.com/linklib/resume/tree/840d329b51ffd95f4563076cec45b59f97dc475e