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.