fix: тип запроса секций и догоняющая миграция английских колонок
Оба дефекта вскрылись сборкой образа после слияния веток. 1. public.ts: SQL выбирает content_json_en, а описание типа запроса пришло из ветки визиток и этой колонки не знало — tsc отказывался собирать. След слияния: запрос из одной ветки, тип из другой. 2. Английские колонки (sections.content_json_en, products.title_en/subtitle_en/ description_en) существуют на боевой базе, но их не создаёт ни одна миграция — когда-то добавили руками. На бою работало, на любой ЧИСТОЙ базе приложение упало бы на первом запросе /api/content. Заведена 005 с IF NOT EXISTS: на бою пусто, на чистой базе создаст. Проверено на живом сайте: образ собран, контейнер healthy, миграции 004 и 005 применились сами, /api/content отдаёт 4 раздела на двух языках, 2 продукта, полные реквизиты; страница визитки отвечает 200.
This commit is contained in:
@@ -6,7 +6,7 @@ export const publicRouter = Router();
|
||||
publicRouter.get('/content', async (_req, res) => {
|
||||
try {
|
||||
const [sections, products, approach, settings] = await Promise.all([
|
||||
query<{ key: string; title: string; content_json: unknown; sort_order: number }>(
|
||||
query<{ key: string; title: string; content_json: unknown; content_json_en: unknown; sort_order: number }>(
|
||||
`SELECT key, title, content_json, content_json_en, sort_order
|
||||
FROM sections
|
||||
WHERE is_active = true
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
-- Английские колонки для переключателя языка.
|
||||
--
|
||||
-- Колонки уже существуют на боевой базе — их когда-то добавили вручную, минуя
|
||||
-- миграции. Найдено 25.08.2026 при слиянии веток: код их читает, а ни один
|
||||
-- файл в db/ не создаёт, то есть на любой ЧИСТОЙ базе (новый стенд, локальная
|
||||
-- разработка, восстановление из пустого) приложение падало бы на первом же
|
||||
-- запросе /api/content.
|
||||
--
|
||||
-- IF NOT EXISTS делает миграцию безопасной для боевой базы: там она ничего не
|
||||
-- изменит, только зафиксирует факт в _migrations.
|
||||
|
||||
ALTER TABLE sections ADD COLUMN IF NOT EXISTS content_json_en JSONB;
|
||||
|
||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS title_en VARCHAR(256);
|
||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS subtitle_en VARCHAR(512);
|
||||
ALTER TABLE products ADD COLUMN IF NOT EXISTS description_en TEXT;
|
||||
Reference in New Issue
Block a user