| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- #!/usr/bin/env coffee
- # Скрипт для добавления тестовых мероприятий в CouchDB
- class EventSeeder
- constructor: ->
- @baseUrl = 'http://localhost:5984'
- @dbName = 'kohi_borbad_events'
- @headers =
- 'Content-Type': 'application/json'
- 'Authorization': 'Basic ' + Buffer.from('oleg:631074').toString('base64')
-
- # Тестовые мероприятия
- @testEvents = [
- {
- _id: 'event_classical_001'
- title: 'Концерт симфонического оркестра'
- date: '2025-10-15'
- time: '19:00'
- description: 'Произведения Чайковского и Рахманинова в исполнении Национального симфонического оркестра под руководством маэстро Фирдавса Абдурахмонова. Незабываемый вечер классической музыки в акустике мирового уровня.'
- shortDescription: 'Шедевры классической музыки в исполнении Национального симфонического оркестра'
- image: '/images/event-classical.jpg'
- category: 'classical'
- price: 50
- venue: 'Большой зал'
- duration: '2 часа 30 минут'
- ageRestriction: '12+'
- availableTickets: 45
- isFeatured: true
- inSlider: true
- cta: 'Купить билеты'
- createdAt: new Date().toISOString()
- updatedAt: new Date().toISOString()
- }
- {
- _id: 'event_folk_001'
- title: 'Вечер таджикской народной музыки'
- date: '2025-10-20'
- time: '18:30'
- description: 'Выступление фольклорного ансамбля "Шашмаком" с программой традиционных мелодий и танцев. Погрузитесь в богатую культурную традицию Таджикистана через музыку, песни и танцы.'
- shortDescription: 'Традиционные мелодии и танцы Таджикистана'
- image: '/images/event-folk.jpg'
- category: 'folk'
- price: 30
- venue: 'Малый зал'
- duration: '2 часа'
- ageRestriction: '6+'
- availableTickets: 28
- isFeatured: true
- inSlider: true
- cta: 'Узнать больше'
- createdAt: new Date().toISOString()
- updatedAt: new Date().toISOString()
- }
- {
- _id: 'event_jazz_001'
- title: 'Джазовый фестиваль "Borbad Jazz"'
- date: '2025-10-25'
- time: '20:00'
- description: 'Международные джазовые коллективы из Европы и Азии в уникальной акустике зала. Три дня незабываемой музыки от лучших джазменов мира. От традиционного джаза до современных экспериментов.'
- shortDescription: 'Международные джазовые коллективы'
- image: '/images/event-jazz.jpg'
- category: 'jazz'
- price: 70
- venue: 'Большой зал'
- duration: '3 часа'
- ageRestriction: '16+'
- availableTickets: 15
- isFeatured: true
- inSlider: true
- cta: 'Смотреть расписание'
- createdAt: new Date().toISOString()
- updatedAt: new Date().toISOString()
- }
- {
- _id: 'event_pop_001'
- title: 'Концерт популярной музыки'
- date: '2025-10-28'
- time: '19:30'
- description: 'Лучшие поп-исполнители Таджикистана представят новые хиты и классические композиции. Энергичное шоу с современной хореографией и световыми эффектами.'
- shortDescription: 'Лучшие поп-исполнители страны'
- image: '/images/event-pop.jpg'
- category: 'pop'
- price: 45
- venue: 'Большой зал'
- duration: '2 часа 15 минут'
- ageRestriction: '12+'
- availableTickets: 67
- isFeatured: true
- inSlider: false
- cta: 'Купить билеты'
- createdAt: new Date().toISOString()
- updatedAt: new Date().toISOString()
- }
- {
- _id: 'event_opera_001'
- title: 'Оперный гала-концерт'
- date: '2025-11-02'
- time: '18:00'
- description: 'Известные оперные певцы исполнят арии из мировых шедевров оперного искусства. Вечер великой музыки в исполнении мастеров оперной сцены.'
- shortDescription: 'Арии из мировых оперных шедевров'
- image: '/images/event-opera.jpg'
- category: 'classical'
- price: 80
- venue: 'Большой зал'
- duration: '2 часа 45 минут'
- ageRestriction: '12+'
- availableTickets: 23
- isFeatured: false
- inSlider: false
- cta: 'Забронировать места'
- createdAt: new Date().toISOString()
- updatedAt: new Date().toISOString()
- }
- {
- _id: 'event_dance_001'
- title: 'Танцевальное шоу "Восточные ритмы"'
- date: '2025-11-05'
- time: '19:00'
- description: 'Традиционные и современные танцевальные коллективы представят красочное шоу. Яркие костюмы, зажигательная музыка и мастерство танцовщиков со всего Таджикистана.'
- shortDescription: 'Традиционные и современные танцы'
- image: '/images/event-dance.jpg'
- category: 'dance'
- price: 35
- venue: 'Большой зал'
- duration: '2 часа 30 минут'
- ageRestriction: '6+'
- availableTickets: 89
- isFeatured: true
- inSlider: true
- cta: 'Посмотреть программу'
- createdAt: new Date().toISOString()
- updatedAt: new Date().toISOString()
- }
- {
- _id: 'event_chamber_001'
- title: 'Камерная музыка: Струнный квартет'
- date: '2025-11-08'
- time: '17:00'
- description: 'Изысканная программа камерной музыки в исполнении ведущего струнного квартета страны. Интимная атмосфера и тонкое звучание в акустике камерного зала.'
- shortDescription: 'Изысканная камерная музыка'
- image: '/images/event-chamber.jpg'
- category: 'classical'
- price: 40
- venue: 'Камерный зал'
- duration: '1 час 45 минут'
- ageRestriction: '12+'
- availableTickets: 34
- isFeatured: false
- inSlider: false
- cta: 'Приобрести билеты'
- createdAt: new Date().toISOString()
- updatedAt: new Date().toISOString()
- }
- {
- _id: 'event_experimental_001'
- title: 'Фестиваль современной музыки'
- date: '2025-11-12'
- time: '20:30'
- description: 'Экспериментальные проекты и инновационные музыкальные направления. Откройте для себя новые грани музыкального искусства от молодых композиторов и исполнителей.'
- shortDescription: 'Экспериментальные музыкальные проекты'
- image: '/images/event-modern.jpg'
- category: 'experimental'
- price: 55
- venue: 'Малый зал'
- duration: '3 часа'
- ageRestriction: '18+'
- availableTickets: 18
- isFeatured: false
- inSlider: true
- cta: 'Исследовать программу'
- createdAt: new Date().toISOString()
- updatedAt: new Date().toISOString()
- }
- ]
- # Проверить существование базы данных
- checkDatabase: ->
- try
- response = await fetch("#{@baseUrl}/#{@dbName}", {
- method: 'GET'
- headers: @headers
- })
-
- if response.ok
- console.log '✅ База данных существует'
- return true
- else if response.status == 404
- console.log '📁 База данных не существует, создаем...'
- return await this.createDatabase()
- else
- console.error '❌ Ошибка проверки базы данных:', response.statusText
- return false
- catch error
- console.error '❌ Ошибка подключения к CouchDB:', error.message
- return false
- # Создать базу данных
- createDatabase: ->
- try
- response = await fetch("#{@baseUrl}/#{@dbName}", {
- method: 'PUT'
- headers: @headers
- })
-
- if response.ok
- console.log '✅ База данных создана успешно'
- return true
- else
- console.error '❌ Ошибка создания базы данных:', response.statusText
- return false
- catch error
- console.error '❌ Ошибка создания базы данных:', error.message
- return false
- # Добавить мероприятие
- addEvent: (event) ->
- try
- response = await fetch("#{@baseUrl}/#{@dbName}/#{event._id}", {
- method: 'PUT'
- headers: @headers
- body: JSON.stringify(event)
- })
-
- if response.ok
- result = await response.json()
- console.log "✅ Мероприятие добавлено: #{event.title}"
- return { success: true, id: result.id }
- else
- console.error "❌ Ошибка добавления мероприятия #{event.title}:", response.statusText
- return { success: false, error: response.statusText }
- catch error
- console.error "❌ Ошибка добавления мероприятия #{event.title}:", error.message
- return { success: false, error: error.message }
- # Основная функция заполнения базы
- seed: ->
- console.log '🎭 Начало заполнения базы данных мероприятиями...'
-
- # Проверяем базу данных
- databaseExists = await this.checkDatabase()
- if not databaseExists
- console.log '❌ Не удалось подключиться к базе данных'
- process.exit(1)
-
- # Добавляем мероприятия
- successCount = 0
- for event in @testEvents
- result = await this.addEvent(event)
- if result.success
- successCount += 1
- # Небольшая задержка между запросами
- await new Promise (resolve) -> setTimeout resolve, 100
-
- console.log "\n🎉 Заполнение завершено!"
- console.log "✅ Успешно добавлено: #{successCount} из #{@testEvents.length} мероприятий"
-
- if successCount == @testEvents.length
- console.log '🎊 Все мероприятия успешно добавлены в базу данных!'
- else
- console.log '⚠️ Некоторые мероприятия не были добавлены'
- # Запуск скрипта
- seeder = new EventSeeder()
- seeder.seed().then ->
- console.log '\n✨ Скрипт завершил работу'
- process.exit(0)
- .catch (error) ->
- console.error '\n💥 Критическая ошибка:', error
- process.exit(1)
|