import 'dotenv/config'; import { PrismaPg } from '@prisma/adapter-pg'; import { PrismaClient } from '@prisma/client'; const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL }); const prisma = new PrismaClient({ adapter }); const BLOCKS = [ { path: '/blocks/navigation', name: 'Шапка / Навигация', version: 'v1.3', isInPreview: true, changelog: [ { version: 'v1.3', date: '24.03.2026', changes: [ 'Подменю: выпадающие списки при hover', 'Hover-эффект: бежевый фон #f5f0e6', 'Пункты подчёркнуты, без разделителей', 'Все пункты чёрного цвета #000', ]}, { version: 'v1.2', date: '24.03.2026', changes: [ 'Убрана рамка и тень вокруг шапки', '3 столбца: логотип | ссылки | телефон+кнопка', 'Реальный логотип logo-main.png', ]}, { version: 'v1.1', date: '24.03.2026', changes: [ 'Адрес: «К. Цеткин, 9», ссылки, телефон 25px, меню 18px', ]}, { version: 'v1.0', date: '23.03.2026', changes: ['Топ-бар, логотип, главное меню из 8 пунктов'] }, ], }, { path: '/blocks/hero', name: 'Hero-баннер', version: 'v1.3', isInPreview: true, changelog: [ { version: 'v1.3', date: '24.03.2026', changes: [ 'Счётчик: «Поделиться ✉ 98572» (было «👁 98 573 просмотра»)', 'Убраны кнопки VK/FB/TW', ]}, { version: 'v1.2', date: '24.03.2026', changes: [ 'H1: цвет #cb9768, размер 36px (было ~20px #53514e)', 'Заголовок баннера: 22px #333 (было 16px #111827)', 'CTA-кнопка: pill-стиль (было outline)', 'Дефис в H1: «–» → «-»', ]}, { version: 'v1.1', date: '23.03.2026', changes: [ 'Единый фон #f9f4e7 (ранее разбит на две зоны)', 'Реальное фото врача с пациентом', ]}, ], }, { path: '/blocks/ceo', name: 'Вводный текст (CEO-блок)', version: 'v1.1', isInPreview: false, changelog: [ { version: 'v1.1', date: '24.03.2026', changes: [ 'Адрес: «ул. Цитная, 9» → «ул. Клары Цеткин, 9»', 'Цвет ссылок: #52b4bd (было #0089c3)', ]}, { version: 'v1.0', date: '23.03.2026', changes: ['Текст специализации клиники, вопросы-стимулы'] }, ], }, { path: '/blocks/doctors', name: 'Наши врачи', version: 'v1.2', isInPreview: true, changelog: [ { version: 'v1.2', date: '24.03.2026', changes: [ 'H2: 36px #000000 (было ~30px #111827)', 'line-height: 38px', ]}, { version: 'v1.1', date: '23.03.2026', changes: [ '6 реальных фото врачей с сайта', 'Статистика без фона, только border-bottom #60959c', ]}, ], }, { path: '/blocks/reviews', name: 'Отзывы', version: 'v1.1', isInPreview: true, changelog: [ { version: 'v1.1', date: '24.03.2026', changes: [ 'H2: 36px #000000 (было ~20px #111827)', 'line-height: 38px', ]}, { version: 'v1.0', date: '23.03.2026', changes: [ 'Карусель отзывов: кавычка, текст, стрелки', ]}, ], }, { path: '/blocks/contact-forms', name: 'Формы записи', version: 'v1.2', isInPreview: true, changelog: [ { version: 'v1.2', date: '24.03.2026', changes: [ 'Кнопка: bb-btn-lg 18px bold (было bb-btn-md 14px)', 'border-radius кнопки: 4px (было 7px)', ]}, { version: 'v1.1', date: '24.03.2026', changes: [ 'H2: 36px #000000', 'Фон формы 1: #b8e6ed → #d4f6f8', 'Фон формы 2: #ffffff → #d4f6f8 (обе формы на одном фоне)', ]}, { version: 'v1.0', date: '23.03.2026', changes: [ 'Две формы записи: «Будьте здоровы!» и «Узнайте стоимость операции»', ]}, ], }, { path: '/blocks/news', name: 'Новости', version: 'v1.1', isInPreview: true, changelog: [ { version: 'v1.1', date: '24.03.2026', changes: [ 'H2: 36px #000000', 'Фон секции: #fff → #f2fee6 (светло-зелёный)', ]}, { version: 'v1.0', date: '23.03.2026', changes: [ '4 карточки новостей в ряд, кнопка «Все новости»', ]}, ], }, { path: '/blocks/contact', name: 'Подвал / Контакт', version: 'v1.1', isInPreview: false, changelog: [ { version: 'v1.1', date: '24.03.2026', changes: [ 'Колонка «О клинике»: 13 ссылок по реальному сайту (было 7)', 'Колонка «Заболевания»: 5 категорий (было 6 конкретных диагнозов)', 'Колонка «Вопрос-ответ»: 6 пунктов по реальному сайту', 'Колонка «Операции»: 11 операций (было 6)', 'Два адреса: Клары Цеткин 9 + Газеты Звезда 31А', 'Два графика работы по филиалам', 'Соцсети: добавлен Дзен', ]}, { version: 'v1.0', date: '23.03.2026', changes: ['4 колонки ссылок, адрес, часы работы'] }, ], }, ]; async function main() { for (const block of BLOCKS) { await prisma.block.upsert({ where: { path: block.path }, update: { version: block.version, isInPreview: block.isInPreview, changelog: block.changelog }, create: block, }); } console.log(`Seeded ${BLOCKS.length} blocks`); } main() .catch((e) => { console.error(e); process.exit(1); }) .finally(() => prisma.$disconnect());