Створення інструменту управління проєктами за допомогою Prisma

Я створюю інструмент для спільної роботи над проєктами, подібний до Trello.

Я використовую React, Express.js, PostgreSQL та Socket.io. Перш ніж писати будь-які маршрути (routes) бекенду, я маю спроектувати схему бази даних.

Схема — це фундамент. Якщо схема побудована неправильно, весь додаток не працюватиме. Ось мій розбір проєктування схеми Prisma.

Моделі

• User: зберігає імена, електронні адреси та паролі. Для ID я використовую cuid(). Це створює довгі унікальні рядки. Це краще за числа, оскільки це не розкриває кількість користувачів через URL.

• Project: містить назву та опис проєкту. Я зробив опис необов'язковим за допомогою знака питання.

• ProjectMember: це проміжна таблиця. Вона пов'язує користувачів (Users) із проєктами (Projects). Оскільки один користувач може брати участь у багатьох проєктах, а один проєкт може мати багато користувачів, вам потрібна ця проміжна таблиця для керування зв'язком «багато до багатьох». Я додав унікальне обмеження (unique constraint), щоб запобігти повторному приєднанню того самого користувача до одного проєкту.

• Board: завдання знаходяться всередині дощок (boards). Дошки — всередині проєктів. Така ієрархія полегшує функцію drag-and-drop. Переміщення завдання між колонками — це лише оновлення одного поля.

• Task: це основна модель. Вона має два різні зв'язки з моделлю User:

• Comment: користувачі можуть залишати коментарі до завдань. Я назвав зв'язок «author» замість «user», щоб зберегти читабельність коду.

• Notification: проста модель для відстеження повідомлень користувачів.

Технічні висновки

Під час розробки я зіткнувся з кількома помилками. Зверніть на них увагу:

Схему вже мігровано. Далі я створю бекенд на Express та налаштую Socket.io для оновлень у реальному часі.

Джерело: https://dev.to/chinwuba_jeffrey/building-a-project-management-tool-from-scratch-starting-with-the-prisma-schema-161