# Подключение PouchDB PouchDB = require 'pouchdb' # Важно сохранять для seed-events.coffee debug = require('../../../utils/coffee/debug.coffee').default class DatabaseSeeder constructor: (dbName, baseUrl = 'http://oleg:631074@localhost:5984') -> @dbName = dbName @baseUrl = baseUrl @db = new PouchDB(@baseUrl+"/"+@dbName) @designDoc = require './design-documents.coffee' # Проверка существования базы данных checkDatabaseExists: -> try info = await @db.info() debug.log "База данных "+@dbName+" существует" return true catch error debug.log "База данных "+@dbName+" не существует: "+error return false # Создание базы данных если не существует createDatabaseIfNotExists: -> exists = await @checkDatabaseExists() if not exists try # Создаем базу через PUT запрос response = await fetch(@baseUrl+"/"+@dbName, method: 'PUT') if response.ok debug.log "База данных "+@dbName+" создана" else debug.log "Ошибка создания базы: "+response.statusText catch error debug.log "Ошибка при создании базы: "+error return exists # Удаление старых версий документов cleanupOldDocuments: -> try debug.log "Начало очистки старых документов" # Получаем все документы allDocs = await @db.allDocs(include_docs: true) documentsToDelete = [] documentsToKeep = new Set() # Группируем документы по типам и идентификаторам documentsByType = {} for row in allDocs.rows doc = row.doc if doc._id.startsWith('_design/') continue # Пропускаем design документы docType = doc.type or 'unknown' if not documentsByType[docType] documentsByType[docType] = [] documentsByType[docType].push(doc) # Для каждого типа документов определяем какие удалять for docType, docs of documentsByType if docs.length <= 6 # Если документов меньше или равно 6, сохраняем все for doc in docs documentsToKeep.add(doc._id) continue # Сортируем по дате создания (новые первыми) sortedDocs = docs.sort (a, b) -> new Date(b.created_at) - new Date(a.created_at) # Оставляем только 6 самых новых документов каждого типа for doc, index in sortedDocs if index < 6 documentsToKeep.add(doc._id) else documentsToDelete.push({ _id: doc._id _rev: doc._rev _deleted: true }) # Удаляем старые документы if documentsToDelete.length > 0 result = await @db.bulkDocs(documentsToDelete) debug.log "Удалено старых документов: "+documentsToDelete.length else debug.log "Старые документы для удаления не найдены" debug.log "Очистка старых документов завершена" catch error debug.log "Ошибка при очистке старых документов: "+error # Проверка и создание design документов setupDesignDocuments: -> try for designName, designDoc of @designDoc docId = "_design/"+designName try # Пытаемся получить текущий документ currentDoc = await @db.get(docId) # Сравниваем версии if currentDoc.version isnt designDoc.version debug.log "Обновление design документа: "+designName designDoc._id = docId designDoc._rev = currentDoc._rev await @db.put(designDoc) debug.log "Design документ "+designName+" обновлен до версии "+designDoc.version else debug.log "Design документ "+designName+" актуален" catch error if error.status is 404 # Документ не существует, создаем новый debug.log "Создание design документа: "+designName designDoc._id = docId await @db.put(designDoc) debug.log "Design документ "+designName+" создан" else throw error catch error debug.log "Ошибка при настройке design документов: "+error # Создание тестовых данных для сайта createSampleData: -> currentDate = new Date().toISOString() futureDate = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString() pastDate = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString() sampleData = [ # Доменные настройки { _id: "domain_settings_borbad_s5l_ru" type: "domain_settings" domain: "borbad.s5l.ru" name: "Кохи Борбад - Концертный зал Душанбе" description: "Официальный сайт концертного зала Борбад" active: true priority: 1 theme: "borbad" languages: ["ru", "en", "tj"] default_language: "ru" timezone: "Asia/Dushanbe" currency: "TJS" settings: seo: title_template: "{page} - Кохи Борбад" description: "Концертный зал Борбад - культурный центр Душанбе" keywords: ["концерты", "мероприятия", "Душанбе", "культура"] social: facebook: "https://facebook.com/borbad" instagram: "https://instagram.com/borbad" twitter: "https://twitter.com/borbad" contact: address: "г. Душанбе, пр. Рудаки 22" phone: "+992 37 123-45-67" email: "info@borbad.s5l.ru" created_at: currentDate updated_at: currentDate } # Слайдеры (6 слайдов) { _id: "slide_1" type: "slide" domain: "borbad.s5l.ru" language: "ru" title: "Добро пожаловать в Кохи Борбад" content: "## Современный концертный зал в сердце Душанбе\n\nМесто, где встречаются искусство и культура" image: "/assets/borbad.s5l.ru/sliders/main-hall.jpg" order: 1 active: true button_text: "Узнать больше" button_link: "/about" text_color: "#ffffff" overlay: true created_at: currentDate updated_at: currentDate } { _id: "slide_2" type: "slide" domain: "borbad.s5l.ru" language: "ru" title: "Симфонические вечера" content: "## Погрузитесь в мир классической музыки\n\nЕженедельные концерты симфонического оркестра" image: "/assets/borbad.s5l.ru/sliders/orchestra.jpg" order: 2 active: true button_text: "Расписание" button_link: "/events" text_color: "#ffffff" overlay: true created_at: currentDate updated_at: currentDate } { _id: "slide_3" type: "slide" domain: "borbad.s5l.ru" language: "ru" title: "Танцевальные представления" content: "## Искусство танца во всем его разнообразии\n\nОт народных до современных постановок" image: "/assets/borbad.s5l.ru/sliders/dance-performance.jpg" order: 3 active: true button_text: "Билеты" button_link: "/events" text_color: "#ffffff" overlay: true created_at: currentDate updated_at: currentDate } { _id: "slide_4" type: "slide" domain: "borbad.s5l.ru" language: "ru" title: "Выставки и вернисажи" content: "## Пространство для современного искусства\n\nРегулярные выставки местных и зарубежных художников" image: "/assets/borbad.s5l.ru/sliders/art-exhibition.jpg" order: 4 active: true button_text: "Галерея" button_link: "/gallery" text_color: "#ffffff" overlay: true created_at: currentDate updated_at: currentDate } { _id: "slide_5" type: "slide" domain: "borbad.s5l.ru" language: "ru" title: "Образовательные программы" content: "## Мастер-классы и лекции\n\nДля детей и взрослых, любителей и профессионалов" image: "/assets/borbad.s5l.ru/sliders/workshop.jpg" order: 5 active: true button_text: "Программы" button_link: "/education" text_color: "#ffffff" overlay: true created_at: currentDate updated_at: currentDate } { _id: "slide_6" type: "slide" domain: "borbad.s5l.ru" language: "ru" title: "Специальные мероприятия" content: "## Корпоративы и частные события\n\nАренда зала для ваших особых мероприятий" image: "/assets/borbad.s5l.ru/sliders/private-event.jpg" order: 6 active: true button_text: "Забронировать" button_link: "/contacts" text_color: "#ffffff" overlay: true created_at: currentDate updated_at: currentDate } # Блог посты (6 постов) { _id: "blog_post_1" type: "blog_post" domain: "borbad.s5l.ru" language: "ru" title: "Открытие нового сезона 2024" content: "# Добро пожаловать в новый творческий сезон!\n\nМы рады объявить о начале нового сезона в концертном зале Борбад. В этом году нас ждут удивительные события:\n\n- **Симфонические концерты** каждую пятницу\n- **Танцевальные вечера** с участием лучших коллективов\n- **Выставки современного искусства**\n- **Образовательные программы** для всех возрастов\n\nНе пропустите наши специальные мероприятия для детей и семей!\n\n## Расписание\n\nПолное расписание мероприятий доступно в разделе [Мероприятия](/events)." excerpt: "Новый творческий сезон 2024 года в концертном зале Борбад" image: "/assets/borbad.s5l.ru/posts/season-opening.jpg" tags: ["новости", "сезон", "анонс"] category_id: "category_news" author: "Администрация Борбад" status: "published" meta_title: "Открытие нового сезона 2024 - Кохи Борбад" meta_description: "Новый творческий сезон 2024 года в концертном зале Борбад в Душанбе" featured: true created_at: currentDate updated_at: currentDate published_at: currentDate views: 156 } { _id: "blog_post_2" type: "blog_post" domain: "borbad.s5l.ru" language: "ru" title: "История создания концертного зала" content: "# Кохи Борбад: История и архитектура\n\n## Начало пути\n\nКонцертный зал Борбад был основан в 2010 году с целью создания современного культурного пространства в Душанбе. Название зала отдает дань уважения великому таджикскому поэту и музыканту Борбаду.\n\n## Архитектурные особенности\n\nЗдание сочетает в себе современные архитектурные решения с традиционными таджикскими мотивами. Особое внимание уделено акустике зала, что делает его идеальным местом для классической музыки.\n\n## Миссия\n\nНаша миссия - способствовать развитию культуры и искусства в Таджикистане, предоставляя площадку для местных и международных артистов." excerpt: "История создания и архитектурные особенности концертного зала Борбад" image: "/assets/borbad.s5l.ru/posts/history-building.jpg" tags: ["история", "архитектура", "культура"] category_id: "category_about" author: "Директор зала" status: "published" meta_title: "История концертного зала Борбад - Кохи Борбад" meta_description: "История создания и архитектура концертного зала Борбад в Душанбе" featured: true created_at: pastDate updated_at: currentDate published_at: pastDate views: 289 } { _id: "blog_post_3" type: "blog_post" domain: "borbad.s5l.ru" language: "ru" title: "Мастер-класс по игре на рубабе" content: "# Искусство игры на традиционных инструментах\n\n## Приглашаем на мастер-класс\n\nИзвестный музыкант Алишер Назаров проведет серию мастер-классов по игре на рубабе - традиционном таджикском музыкальном инструменте.\n\n## Программа\n\n- Основы техники игры\n- Традиционные мелодии\n- Современные аранжировки\n- Индивидуальные занятия\n\n## Даты проведения\n\nМастер-классы будут проходить каждую субботу в 15:00. Количество участников ограничено.\n\n## Регистрация\n\nДля участия необходимо зарегистрироваться по телефону +992 37 123-45-67." excerpt: "Мастер-классы по игре на традиционном таджикском инструменте рубаб" image: "/assets/borbad.s5l.ru/posts/rubab-workshop.jpg" tags: ["мастер-класс", "музыка", "образование"] category_id: "category_education" author: "Алишер Назаров" status: "published" meta_title: "Мастер-класс по игре на рубабе - Кохи Борбад" meta_description: "Мастер-классы по игре на традиционном таджикском инструменте рубаб в Душанбе" featured: false created_at: new Date(Date.now() - 2 * 24 * 60 * 60 * 1000).toISOString() updated_at: currentDate published_at: new Date(Date.now() - 2 * 24 * 60 * 60 * 1000).toISOString() views: 98 } { _id: "blog_post_4" type: "blog_post" domain: "borbad.s5l.ru" language: "ru" title: "Выставка современного таджикского искусства" content: "# Новые горизонты: Современное искусство Таджикистана\n\n## О выставке\n\nВ галерее Борбад открывается масштабная выставка современных таджикских художников. В экспозиции представлены работы в различных техниках и стилях.\n\n## Участники\n\n- Фаррух Негматзаде (живопись)\n- Садбарг Касымова (скульптура)\n- Джахонгир Азизов (цифровое искусство)\n- и другие\n\n## Темы\n\nХудожники исследуют темы идентичности, традиций и современности в условиях глобализации.\n\n## Время работы\n\nВыставка открыта ежедневно с 10:00 до 20:00. Вход свободный." excerpt: "Выставка современных таджикских художников в галерее Борбад" image: "/assets/borbad.s5l.ru/posts/art-exhibition.jpg" tags: ["выставка", "искусство", "современное"] category_id: "category_exhibitions" author: "Куратор галереи" status: "published" meta_title: "Выставка современного таджикского искусства - Кохи Борбад" meta_description: "Выставка современных таджикских художников в галерее концертного зала Борбад" featured: true created_at: new Date(Date.now() - 5 * 24 * 60 * 60 * 1000).toISOString() updated_at: currentDate published_at: new Date(Date.now() - 5 * 24 * 60 * 60 * 1000).toISOString() views: 167 } { _id: "blog_post_5" type: "blog_post" domain: "borbad.s5l.ru" language: "ru" title: "Вечер поэзии и музыки" content: "# Шедевры персидской поэзии\n\n## Особый вечер\n\nПриглашаем на уникальный вечер, посвященный персидской поэзии в сопровождении традиционной музыки.\n\n## Программа\n\n- Чтение стихов Рудаки, Хафиза и Саади\n- Музыкальное сопровождение на сеторе и дойре\n- Современные интерпретации классических произведений\n\n## Исполнители\n\nВ вечере принимают участие известные чтецы и музыканты Таджикистана.\n\n## Билеты\n\nБилеты можно приобрести в кассе зала или онлайн на нашем сайте." excerpt: "Вечер персидской поэзии в сопровождении традиционной музыки" image: "/assets/borbad.s5l.ru/posts/poetry-evening.jpg" tags: ["поэзия", "музыка", "традиции"] category_id: "category_events" author: "Организатор мероприятий" status: "published" meta_title: "Вечер персидской поэзии - Кохи Борбад" meta_description: "Вечер персидской поэзии в сопровождении традиционной музыки в концертном зале Борбад" featured: false created_at: new Date(Date.now() - 8 * 24 * 60 * 60 * 1000).toISOString() updated_at: currentDate published_at: new Date(Date.now() - 8 * 24 * 60 * 60 * 1000).toISOString() views: 134 } { _id: "blog_post_6" type: "blog_post" domain: "borbad.s5l.ru" language: "ru" title: "Детская программа: Музыкальная сказка" content: "# Волшебный мир музыки для детей\n\n## Новая постановка\n\nТеатральная студия Борбад представляет музыкальную сказку \"Волшебная флейта\" для детей от 3 до 10 лет.\n\n## Сюжет\n\nМаленькие зрители отправятся в увлекательное путешествие вместе с главными героями, где музыка помогает преодолевать препятствия и творить чудеса.\n\n## Образовательный аспект\n\nСпектакль знакомит детей с различными музыкальными инструментами и основными понятиями музыки.\n\n## Расписание\n\nПредставления проходят по воскресеньям в 11:00. Продолжительность - 45 минут." excerpt: "Музыкальная сказка для детей в театральной студии Борбад" image: "/assets/borbad.s5l.ru/posts/children-play.jpg" tags: ["дети", "театр", "образование"] category_id: "category_children" author: "Художественный руководитель" status: "published" meta_title: "Детская музыкальная сказка - Кохи Борбад" meta_description: "Музыкальная сказка для детей в театральной студии концертного зала Борбад" featured: true created_at: new Date(Date.now() - 12 * 24 * 60 * 60 * 1000).toISOString() updated_at: currentDate published_at: new Date(Date.now() - 12 * 24 * 60 * 60 * 1000).toISOString() views: 201 } # Мероприятия (6 мероприятий) { _id: "event_1" type: "event" domain: "borbad.s5l.ru" language: "ru" title: "Симфонический концерт: Бетховен и Чайковский" content: "# Великие композиторы\n\n## Программа концерта\n\n- **Л. ван Бетховен** - Симфония №5\n- **П.И. Чайковский** - Лебединое озеро (сюита)\n- **П.И. Чайковский** - Щелкунчик (сюита)\n\n## Исполнители\n\nСимфонический оркестр Борбад под управлением дирижера Фарруха Саидова.\n\n## Продолжительность\n\nКонцерт длится 2 часа с одним антрактом.\n\n## Рекомендации\n\nРекомендуем приходить за 30 минут до начала концерта." event_date: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000).toISOString() end_date: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000 + 2 * 60 * 60 * 1000).toISOString() location: "Большой зал" venue_id: "venue_main_hall" price: 500 currency: "TJS" available_tickets: 45 total_tickets: 300 image: "/assets/borbad.s5l.ru/events/beethoven-concert.jpg" gallery: [ "/assets/borbad.s5l.ru/gallery/concert1.jpg" "/assets/borbad.s5l.ru/gallery/concert2.jpg" ] tags: ["концерт", "симфоническая музыка", "классика", "Бетховен", "Чайковский"] category_id: "category_concerts" status: "upcoming" registration_required: true max_attendees: 300 age_restriction: "6+" created_at: currentDate updated_at: currentDate } { _id: "event_2" type: "event" domain: "borbad.s5l.ru" language: "ru" title: "Танцевальный вечер: Народные традиции" content: "# Танцы народов мира\n\n## Программа\n\n- Таджикские народные танцы\n- Узбекские классические танцы\n- Афганские традиционные танцы\n- Современные хореографические постановки\n\n## Коллективы\n\n- Ансамбль \"Лола\"\n- Танцевальная группа \"Шарора\"\n- Гость из Кабула - ансамбль \"Ариана\"\n\n## Особенности\n\nЯркие костюмы, живая музыка и энергия традиционных танцев." event_date: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString() end_date: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000 + 2.5 * 60 * 60 * 1000).toISOString() location: "Большой зал" venue_id: "venue_main_hall" price: 400 currency: "TJS" available_tickets: 120 total_tickets: 300 image: "/assets/borbad.s5l.ru/events/folk-dance.jpg" gallery: [ "/assets/borbad.s5l.ru/gallery/dance1.jpg" "/assets/borbad.s5l.ru/gallery/dance2.jpg" ] tags: ["танец", "народный", "традиции", "фольклор"] category_id: "category_dance" status: "upcoming" registration_required: true max_attendees: 300 age_restriction: "Все возраста" created_at: currentDate updated_at: currentDate } { _id: "event_3" type: "event" domain: "borbad.s5l.ru" language: "ru" title: "Джазовый вечер с Тимуром Якубовым" content: "# Современный джаз в Борбаде\n\n## О исполнителе\n\nТимур Якубов - известный джазовый пианист и композитор, лауреат международных конкурсов.\n\n## Программа\n\n- Авторские композиции\n- Джазовые стандарты\n- Импровизации\n- Совместные выступления с местными музыкантами\n\n## Стиль\n\nСовременный джаз с влиянием таджикских музыкальных традиций." event_date: new Date(Date.now() + 10 * 24 * 60 * 60 * 1000).toISOString() end_date: new Date(Date.now() + 10 * 24 * 60 * 60 * 1000 + 2 * 60 * 60 * 1000).toISOString() location: "Малый зал" venue_id: "venue_small_hall" price: 350 currency: "TJS" available_tickets: 80 total_tickets: 150 image: "/assets/borbad.s5l.ru/events/jazz-evening.jpg" gallery: [ "/assets/borbad.s5l.ru/gallery/jazz1.jpg" ] tags: ["джаз", "современная музыка", "импровизация"] category_id: "category_concerts" status: "upcoming" registration_required: true max_attendees: 150 age_restriction: "12+" created_at: currentDate updated_at: currentDate } { _id: "event_4" type: "event" domain: "borbad.s5l.ru" language: "ru" title: "Выставка: Современное искусство Центральной Азии" content: "# Диалог культур\n\n## О выставке\n\nКрупная выставка, представляющая работы современных художников из Таджикистана, Узбекистана, Казахстана и Кыргызстана.\n\n## Куратор\n\nДоктор искусствоведения Зарина Каримова.\n\n## Темы\n\n- Идентичность в современном мире\n- Традиции и инновации\n- Экологические проблемы региона\n\n## Особенности\n\nИнтерактивные инсталляции и мультимедийные проекты." event_date: new Date(Date.now() + 2 * 24 * 60 * 60 * 1000).toISOString() end_date: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString() location: "Галерея Борбад" venue_id: "venue_gallery" price: 0 currency: "TJS" available_tickets: 999 total_tickets: 1000 image: "/assets/borbad.s5l.ru/events/art-exhibition.jpg" gallery: [ "/assets/borbad.s5l.ru/gallery/exhibition1.jpg" "/assets/borbad.s5l.ru/gallery/exhibition2.jpg" "/assets/borbad.s5l.ru/gallery/exhibition3.jpg" ] tags: ["выставка", "искусство", "современное", "Центральная Азия"] category_id: "category_exhibitions" status: "upcoming" registration_required: false max_attendees: 50 age_restriction: "Все возраста" created_at: currentDate updated_at: currentDate } { _id: "event_5" type: "event" domain: "borbad.s5l.ru" language: "ru" title: "Мастер-класс: Основы вокала" content: "# Искусство пения для начинающих\n\n## О ведущем\n\nОперный певец Шариф Мухтаров, солист Национального театра оперы и балета.\n\n## Программа\n\n- Постановка дыхания\n- Основы вокальной техники\n- Работа с резонаторами\n- Подбор репертуара\n- Преодоление страха сцены\n\n## Для кого\n\nДля всех, кто хочет научиться правильно петь или улучшить свои вокальные навыки." event_date: new Date(Date.now() + 5 * 24 * 60 * 60 * 1000).toISOString() end_date: new Date(Date.now() + 5 * 24 * 60 * 60 * 1000 + 3 * 60 * 60 * 1000).toISOString() location: "Репетиционный зал" venue_id: "venue_rehearsal" price: 200 currency: "TJS" available_tickets: 15 total_tickets: 20 image: "/assets/borbad.s5l.ru/events/vocal-workshop.jpg" gallery: [ "/assets/borbad.s5l.ru/gallery/workshop1.jpg" ] tags: ["мастер-класс", "вокал", "образование", "музыка"] category_id: "category_education" status: "upcoming" registration_required: true max_attendees: 20 age_restriction: "16+" created_at: currentDate updated_at: currentDate } { _id: "event_6" type: "event" domain: "borbad.s5l.ru" language: "ru" title: "Кинопоказ: Классика советского кино" content: "# Вечер памяти великого режиссера\n\n## Фильм\n\n\"Человек идет за солнцем\" (1961) режиссера Михаила Калика.\n\n## О фильме\n\nПоэтическая киноповесть о мальчике, который отправляется на поиски солнца. Символический фильм о детстве, мечтах и надеждах.\n\n## После показа\n\nОбсуждение с киноведом Дилшодом Рахматовым.\n\n## Особенности\n\nПоказ на оригинальной пленке с цифровым восстановлением." event_date: new Date(Date.now() + 14 * 24 * 60 * 60 * 1000).toISOString() end_date: new Date(Date.now() + 14 * 24 * 60 * 60 * 1000 + 2.5 * 60 * 60 * 1000).toISOString() location: "Малый зал" venue_id: "venue_small_hall" price: 150 currency: "TJS" available_tickets: 95 total_tickets: 150 image: "/assets/borbad.s5l.ru/events/film-screening.jpg" gallery: [ "/assets/borbad.s5l.ru/gallery/film1.jpg" ] tags: ["кино", "ретро", "советское кино", "культура"] category_id: "category_film" status: "upcoming" registration_required: true max_attendees: 150 age_restriction: "12+" created_at: currentDate updated_at: currentDate } # Категории { _id: "category_news" type: "category" domain: "borbad.s5l.ru" language: "ru" name: "Новости" slug: "news" description: "Последние новости и анонсы концертного зала" image: "/assets/borbad.s5l.ru/categories/news.jpg" parent_id: null order: 1 meta_title: "Новости - Кохи Борбад" meta_description: "Последние новости и анонсы концертного зала Борбад" active: true created_at: currentDate updated_at: currentDate } { _id: "category_concerts" type: "category" domain: "borbad.s5l.ru" language: "ru" name: "Концерты" slug: "concerts" description: "Музыкальные мероприятия и концерты" image: "/assets/borbad.s5l.ru/categories/concerts.jpg" parent_id: null order: 2 meta_title: "Концерты - Кохи Борбад" meta_description: "Музыкальные мероприятия и концерты в концертном зале Борбад" active: true created_at: currentDate updated_at: currentDate } { _id: "category_exhibitions" type: "category" domain: "borbad.s5l.ru" language: "ru" name: "Выставки" slug: "exhibitions" description: "Художественные выставки и вернисажи" image: "/assets/borbad.s5l.ru/categories/exhibitions.jpg" parent_id: null order: 3 meta_title: "Выставки - Кохи Борбад" meta_description: "Художественные выставки и вернисажи в галерее Борбад" active: true created_at: currentDate updated_at: currentDate } { _id: "category_education" type: "category" domain: "borbad.s5l.ru" language: "ru" name: "Образование" slug: "education" description: "Мастер-классы, лекции и образовательные программы" image: "/assets/borbad.s5l.ru/categories/education.jpg" parent_id: null order: 4 meta_title: "Образовательные программы - Кохи Борбад" meta_description: "Мастер-классы, лекции и образовательные программы в концертном зале Борбад" active: true created_at: currentDate updated_at: currentDate } ] try createdCount = 0 updatedCount = 0 for doc in sampleData try # Проверяем существует ли документ existing = await @db.get(doc._id) doc._rev = existing._rev await @db.put(doc) updatedCount++ debug.log "Обновлен документ: "+doc._id catch error if error.status is 404 # Документ не существует, создаем новый await @db.put(doc) createdCount++ debug.log "Создан документ: "+doc._id else throw error debug.log "Тестовые данные успешно созданы: создано "+createdCount+", обновлено "+updatedCount catch error debug.log "Ошибка при создании тестовых данных: "+error # Основной метод инициализации initialize: -> debug.log "Начало инициализации базы данных" await @createDatabaseIfNotExists() await @cleanupOldDocuments() await @setupDesignDocuments() await @createSampleData() debug.log "Инициализация базы данных завершена" # Экспорт класса module.exports = DatabaseSeeder # Если файл запущен напрямую if require.main is module seeder = new DatabaseSeeder('borbad_events') seeder.initialize().catch (error) -> debug.log "Критическая ошибка инициализации: "+error