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: '/components/navigation', name: 'Шапка / Навигация', version: 'v1.0', isInPreview: true, changelog: [ { version: 'v1.0', date: '23.03.2026', changes: ['Топ-бар, логотип, главное меню из 8 пунктов'] }, ], }, { path: '/blocks/hero', name: 'Hero-баннер', version: 'v1.2', isInPreview: true, changelog: [ { 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.0', isInPreview: false, changelog: [ { 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.1', isInPreview: true, changelog: [ { 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.0', isInPreview: false, changelog: [ { 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());