DaydreamMods

DaydreamMods

База данных

PostgreSQL, миграции и что лежит в каждой группе таблиц.

Прод — PostgreSQL. Схема: packages/database/src/schema.ts. SQL миграций: packages/database/drizzle. Журнал применённых файлов Drizzle лежит в той же базе, повторный migrate уже накатанное не выполняет.

bun run db:generate   # после изменения schema.ts, на машине разработчика
bun run db:migrate    # на сервере и локально
bun run db:seed       # первичные данные, идемпотентно для уже созданных строк

Перед migrate на сервере подхватывают .env. Иначе скрипт ищет PGlite в каталоге data/pglite и завершается с ошибкой файла.

Люди

  • users — id, ник, email, хеш пароля, роль, email_verified_at, даты.
  • sessions — хеш токена и срок. Сырой токен только у браузера.
  • email_tokens — подтверждение и сброс пароля, хеш, срок, момент использования.

Деньги и доступ

  • plans — slug, имя, цена в рублях, период в днях, текст, вид, признак «главный», порядок, активность, своя дата открытия, роль Discord.
  • plan_entitlements — уникальная пара тариф + проект.
  • subscriptions — статус и даты.
  • payments — сумма, статус, invoice_id, связь с подпиской и промокодом, сырой ответ Robokassa, paid_at.
  • promo_codes, promo_redemptions — правила скидки и факт применения.

Миры

  • projects — тексты, JSON-массивы особенностей, механик и скриншотов, версии Minecraft и загрузчика, требования, баннер, логотип, статус, публикация, порядок.
  • project_versions — номер, changelog, статус, дата релиза, storage_key, имя файла, размер.
  • download_tokens — хеш, срок, used_at.

Редакция

  • news_posts, social_resources, faq_items, legal_documents.
  • job_positions, job_applications — статусы заявки: new, reviewing, accepted, rejected.
  • support_tickets, ticket_messages — обращение и реплики client / staff. У тикета reply_token.
  • site_settings — ключ и JSON-значение. Строки (дата продаж, заголовок, favicon) хранятся как JSON-строка, не как объект.
  • visit_events — путь и время для Dashboard.

Удаление пользователя каскадом убирает его сессии, подписки и токены скачивания. Проект, на который ещё ссылаются права тарифа, так не удаляют: сначала снимают entitlement.