seed-events.coffee 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689
  1. # Подключение PouchDB
  2. PouchDB = require 'pouchdb'
  3. # Важно сохранять для seed-events.coffee
  4. debug = require('../../../utils/coffee/debug.coffee').default
  5. class DatabaseSeeder
  6. constructor: (dbName, baseUrl = 'http://oleg:631074@localhost:5984') ->
  7. @dbName = dbName
  8. @baseUrl = baseUrl
  9. @db = new PouchDB(@baseUrl+"/"+@dbName)
  10. @designDoc = require './design-documents.coffee'
  11. # Проверка существования базы данных
  12. checkDatabaseExists: ->
  13. try
  14. info = await @db.info()
  15. debug.log "База данных "+@dbName+" существует"
  16. return true
  17. catch error
  18. debug.log "База данных "+@dbName+" не существует: "+error
  19. return false
  20. # Создание базы данных если не существует
  21. createDatabaseIfNotExists: ->
  22. exists = await @checkDatabaseExists()
  23. if not exists
  24. try
  25. # Создаем базу через PUT запрос
  26. response = await fetch(@baseUrl+"/"+@dbName, method: 'PUT')
  27. if response.ok
  28. debug.log "База данных "+@dbName+" создана"
  29. else
  30. debug.log "Ошибка создания базы: "+response.statusText
  31. catch error
  32. debug.log "Ошибка при создании базы: "+error
  33. return exists
  34. # Удаление старых версий документов
  35. cleanupOldDocuments: ->
  36. try
  37. debug.log "Начало очистки старых документов"
  38. # Получаем все документы
  39. allDocs = await @db.allDocs(include_docs: true)
  40. documentsToDelete = []
  41. documentsToKeep = new Set()
  42. # Группируем документы по типам и идентификаторам
  43. documentsByType = {}
  44. for row in allDocs.rows
  45. doc = row.doc
  46. if doc._id.startsWith('_design/')
  47. continue # Пропускаем design документы
  48. docType = doc.type or 'unknown'
  49. if not documentsByType[docType]
  50. documentsByType[docType] = []
  51. documentsByType[docType].push(doc)
  52. # Для каждого типа документов определяем какие удалять
  53. for docType, docs of documentsByType
  54. if docs.length <= 6
  55. # Если документов меньше или равно 6, сохраняем все
  56. for doc in docs
  57. documentsToKeep.add(doc._id)
  58. continue
  59. # Сортируем по дате создания (новые первыми)
  60. sortedDocs = docs.sort (a, b) ->
  61. new Date(b.created_at) - new Date(a.created_at)
  62. # Оставляем только 6 самых новых документов каждого типа
  63. for doc, index in sortedDocs
  64. if index < 6
  65. documentsToKeep.add(doc._id)
  66. else
  67. documentsToDelete.push({
  68. _id: doc._id
  69. _rev: doc._rev
  70. _deleted: true
  71. })
  72. # Удаляем старые документы
  73. if documentsToDelete.length > 0
  74. result = await @db.bulkDocs(documentsToDelete)
  75. debug.log "Удалено старых документов: "+documentsToDelete.length
  76. else
  77. debug.log "Старые документы для удаления не найдены"
  78. debug.log "Очистка старых документов завершена"
  79. catch error
  80. debug.log "Ошибка при очистке старых документов: "+error
  81. # Проверка и создание design документов
  82. setupDesignDocuments: ->
  83. try
  84. for designName, designDoc of @designDoc
  85. docId = "_design/"+designName
  86. try
  87. # Пытаемся получить текущий документ
  88. currentDoc = await @db.get(docId)
  89. # Сравниваем версии
  90. if currentDoc.version isnt designDoc.version
  91. debug.log "Обновление design документа: "+designName
  92. designDoc._id = docId
  93. designDoc._rev = currentDoc._rev
  94. await @db.put(designDoc)
  95. debug.log "Design документ "+designName+" обновлен до версии "+designDoc.version
  96. else
  97. debug.log "Design документ "+designName+" актуален"
  98. catch error
  99. if error.status is 404
  100. # Документ не существует, создаем новый
  101. debug.log "Создание design документа: "+designName
  102. designDoc._id = docId
  103. await @db.put(designDoc)
  104. debug.log "Design документ "+designName+" создан"
  105. else
  106. throw error
  107. catch error
  108. debug.log "Ошибка при настройке design документов: "+error
  109. # Создание тестовых данных для сайта
  110. createSampleData: ->
  111. currentDate = new Date().toISOString()
  112. futureDate = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString()
  113. pastDate = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString()
  114. sampleData = [
  115. # Доменные настройки
  116. {
  117. _id: "domain_settings_borbad_s5l_ru"
  118. type: "domain_settings"
  119. domain: "borbad.s5l.ru"
  120. name: "Кохи Борбад - Концертный зал Душанбе"
  121. description: "Официальный сайт концертного зала Борбад"
  122. active: true
  123. priority: 1
  124. theme: "borbad"
  125. languages: ["ru", "en", "tj"]
  126. default_language: "ru"
  127. timezone: "Asia/Dushanbe"
  128. currency: "TJS"
  129. settings:
  130. seo:
  131. title_template: "{page} - Кохи Борбад"
  132. description: "Концертный зал Борбад - культурный центр Душанбе"
  133. keywords: ["концерты", "мероприятия", "Душанбе", "культура"]
  134. social:
  135. facebook: "https://facebook.com/borbad"
  136. instagram: "https://instagram.com/borbad"
  137. twitter: "https://twitter.com/borbad"
  138. contact:
  139. address: "г. Душанбе, пр. Рудаки 22"
  140. phone: "+992 37 123-45-67"
  141. email: "info@borbad.s5l.ru"
  142. created_at: currentDate
  143. updated_at: currentDate
  144. }
  145. # Слайдеры (6 слайдов)
  146. {
  147. _id: "slide_1"
  148. type: "slide"
  149. domain: "borbad.s5l.ru"
  150. language: "ru"
  151. title: "Добро пожаловать в Кохи Борбад"
  152. content: "## Современный концертный зал в сердце Душанбе\n\nМесто, где встречаются искусство и культура"
  153. image: "/assets/borbad.s5l.ru/sliders/main-hall.jpg"
  154. order: 1
  155. active: true
  156. button_text: "Узнать больше"
  157. button_link: "/about"
  158. text_color: "#ffffff"
  159. overlay: true
  160. created_at: currentDate
  161. updated_at: currentDate
  162. }
  163. {
  164. _id: "slide_2"
  165. type: "slide"
  166. domain: "borbad.s5l.ru"
  167. language: "ru"
  168. title: "Симфонические вечера"
  169. content: "## Погрузитесь в мир классической музыки\n\nЕженедельные концерты симфонического оркестра"
  170. image: "/assets/borbad.s5l.ru/sliders/orchestra.jpg"
  171. order: 2
  172. active: true
  173. button_text: "Расписание"
  174. button_link: "/events"
  175. text_color: "#ffffff"
  176. overlay: true
  177. created_at: currentDate
  178. updated_at: currentDate
  179. }
  180. {
  181. _id: "slide_3"
  182. type: "slide"
  183. domain: "borbad.s5l.ru"
  184. language: "ru"
  185. title: "Танцевальные представления"
  186. content: "## Искусство танца во всем его разнообразии\n\nОт народных до современных постановок"
  187. image: "/assets/borbad.s5l.ru/sliders/dance-performance.jpg"
  188. order: 3
  189. active: true
  190. button_text: "Билеты"
  191. button_link: "/events"
  192. text_color: "#ffffff"
  193. overlay: true
  194. created_at: currentDate
  195. updated_at: currentDate
  196. }
  197. {
  198. _id: "slide_4"
  199. type: "slide"
  200. domain: "borbad.s5l.ru"
  201. language: "ru"
  202. title: "Выставки и вернисажи"
  203. content: "## Пространство для современного искусства\n\nРегулярные выставки местных и зарубежных художников"
  204. image: "/assets/borbad.s5l.ru/sliders/art-exhibition.jpg"
  205. order: 4
  206. active: true
  207. button_text: "Галерея"
  208. button_link: "/gallery"
  209. text_color: "#ffffff"
  210. overlay: true
  211. created_at: currentDate
  212. updated_at: currentDate
  213. }
  214. {
  215. _id: "slide_5"
  216. type: "slide"
  217. domain: "borbad.s5l.ru"
  218. language: "ru"
  219. title: "Образовательные программы"
  220. content: "## Мастер-классы и лекции\n\nДля детей и взрослых, любителей и профессионалов"
  221. image: "/assets/borbad.s5l.ru/sliders/workshop.jpg"
  222. order: 5
  223. active: true
  224. button_text: "Программы"
  225. button_link: "/education"
  226. text_color: "#ffffff"
  227. overlay: true
  228. created_at: currentDate
  229. updated_at: currentDate
  230. }
  231. {
  232. _id: "slide_6"
  233. type: "slide"
  234. domain: "borbad.s5l.ru"
  235. language: "ru"
  236. title: "Специальные мероприятия"
  237. content: "## Корпоративы и частные события\n\nАренда зала для ваших особых мероприятий"
  238. image: "/assets/borbad.s5l.ru/sliders/private-event.jpg"
  239. order: 6
  240. active: true
  241. button_text: "Забронировать"
  242. button_link: "/contacts"
  243. text_color: "#ffffff"
  244. overlay: true
  245. created_at: currentDate
  246. updated_at: currentDate
  247. }
  248. # Блог посты (6 постов)
  249. {
  250. _id: "blog_post_1"
  251. type: "blog_post"
  252. domain: "borbad.s5l.ru"
  253. language: "ru"
  254. title: "Открытие нового сезона 2024"
  255. content: "# Добро пожаловать в новый творческий сезон!\n\nМы рады объявить о начале нового сезона в концертном зале Борбад. В этом году нас ждут удивительные события:\n\n- **Симфонические концерты** каждую пятницу\n- **Танцевальные вечера** с участием лучших коллективов\n- **Выставки современного искусства**\n- **Образовательные программы** для всех возрастов\n\nНе пропустите наши специальные мероприятия для детей и семей!\n\n## Расписание\n\nПолное расписание мероприятий доступно в разделе [Мероприятия](/events)."
  256. excerpt: "Новый творческий сезон 2024 года в концертном зале Борбад"
  257. image: "/assets/borbad.s5l.ru/posts/season-opening.jpg"
  258. tags: ["новости", "сезон", "анонс"]
  259. category_id: "category_news"
  260. author: "Администрация Борбад"
  261. status: "published"
  262. meta_title: "Открытие нового сезона 2024 - Кохи Борбад"
  263. meta_description: "Новый творческий сезон 2024 года в концертном зале Борбад в Душанбе"
  264. featured: true
  265. created_at: currentDate
  266. updated_at: currentDate
  267. published_at: currentDate
  268. views: 156
  269. }
  270. {
  271. _id: "blog_post_2"
  272. type: "blog_post"
  273. domain: "borbad.s5l.ru"
  274. language: "ru"
  275. title: "История создания концертного зала"
  276. content: "# Кохи Борбад: История и архитектура\n\n## Начало пути\n\nКонцертный зал Борбад был основан в 2010 году с целью создания современного культурного пространства в Душанбе. Название зала отдает дань уважения великому таджикскому поэту и музыканту Борбаду.\n\n## Архитектурные особенности\n\nЗдание сочетает в себе современные архитектурные решения с традиционными таджикскими мотивами. Особое внимание уделено акустике зала, что делает его идеальным местом для классической музыки.\n\n## Миссия\n\nНаша миссия - способствовать развитию культуры и искусства в Таджикистане, предоставляя площадку для местных и международных артистов."
  277. excerpt: "История создания и архитектурные особенности концертного зала Борбад"
  278. image: "/assets/borbad.s5l.ru/posts/history-building.jpg"
  279. tags: ["история", "архитектура", "культура"]
  280. category_id: "category_about"
  281. author: "Директор зала"
  282. status: "published"
  283. meta_title: "История концертного зала Борбад - Кохи Борбад"
  284. meta_description: "История создания и архитектура концертного зала Борбад в Душанбе"
  285. featured: true
  286. created_at: pastDate
  287. updated_at: currentDate
  288. published_at: pastDate
  289. views: 289
  290. }
  291. {
  292. _id: "blog_post_3"
  293. type: "blog_post"
  294. domain: "borbad.s5l.ru"
  295. language: "ru"
  296. title: "Мастер-класс по игре на рубабе"
  297. 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."
  298. excerpt: "Мастер-классы по игре на традиционном таджикском инструменте рубаб"
  299. image: "/assets/borbad.s5l.ru/posts/rubab-workshop.jpg"
  300. tags: ["мастер-класс", "музыка", "образование"]
  301. category_id: "category_education"
  302. author: "Алишер Назаров"
  303. status: "published"
  304. meta_title: "Мастер-класс по игре на рубабе - Кохи Борбад"
  305. meta_description: "Мастер-классы по игре на традиционном таджикском инструменте рубаб в Душанбе"
  306. featured: false
  307. created_at: new Date(Date.now() - 2 * 24 * 60 * 60 * 1000).toISOString()
  308. updated_at: currentDate
  309. published_at: new Date(Date.now() - 2 * 24 * 60 * 60 * 1000).toISOString()
  310. views: 98
  311. }
  312. {
  313. _id: "blog_post_4"
  314. type: "blog_post"
  315. domain: "borbad.s5l.ru"
  316. language: "ru"
  317. title: "Выставка современного таджикского искусства"
  318. content: "# Новые горизонты: Современное искусство Таджикистана\n\n## О выставке\n\nВ галерее Борбад открывается масштабная выставка современных таджикских художников. В экспозиции представлены работы в различных техниках и стилях.\n\n## Участники\n\n- Фаррух Негматзаде (живопись)\n- Садбарг Касымова (скульптура)\n- Джахонгир Азизов (цифровое искусство)\n- и другие\n\n## Темы\n\nХудожники исследуют темы идентичности, традиций и современности в условиях глобализации.\n\n## Время работы\n\nВыставка открыта ежедневно с 10:00 до 20:00. Вход свободный."
  319. excerpt: "Выставка современных таджикских художников в галерее Борбад"
  320. image: "/assets/borbad.s5l.ru/posts/art-exhibition.jpg"
  321. tags: ["выставка", "искусство", "современное"]
  322. category_id: "category_exhibitions"
  323. author: "Куратор галереи"
  324. status: "published"
  325. meta_title: "Выставка современного таджикского искусства - Кохи Борбад"
  326. meta_description: "Выставка современных таджикских художников в галерее концертного зала Борбад"
  327. featured: true
  328. created_at: new Date(Date.now() - 5 * 24 * 60 * 60 * 1000).toISOString()
  329. updated_at: currentDate
  330. published_at: new Date(Date.now() - 5 * 24 * 60 * 60 * 1000).toISOString()
  331. views: 167
  332. }
  333. {
  334. _id: "blog_post_5"
  335. type: "blog_post"
  336. domain: "borbad.s5l.ru"
  337. language: "ru"
  338. title: "Вечер поэзии и музыки"
  339. content: "# Шедевры персидской поэзии\n\n## Особый вечер\n\nПриглашаем на уникальный вечер, посвященный персидской поэзии в сопровождении традиционной музыки.\n\n## Программа\n\n- Чтение стихов Рудаки, Хафиза и Саади\n- Музыкальное сопровождение на сеторе и дойре\n- Современные интерпретации классических произведений\n\n## Исполнители\n\nВ вечере принимают участие известные чтецы и музыканты Таджикистана.\n\n## Билеты\n\nБилеты можно приобрести в кассе зала или онлайн на нашем сайте."
  340. excerpt: "Вечер персидской поэзии в сопровождении традиционной музыки"
  341. image: "/assets/borbad.s5l.ru/posts/poetry-evening.jpg"
  342. tags: ["поэзия", "музыка", "традиции"]
  343. category_id: "category_events"
  344. author: "Организатор мероприятий"
  345. status: "published"
  346. meta_title: "Вечер персидской поэзии - Кохи Борбад"
  347. meta_description: "Вечер персидской поэзии в сопровождении традиционной музыки в концертном зале Борбад"
  348. featured: false
  349. created_at: new Date(Date.now() - 8 * 24 * 60 * 60 * 1000).toISOString()
  350. updated_at: currentDate
  351. published_at: new Date(Date.now() - 8 * 24 * 60 * 60 * 1000).toISOString()
  352. views: 134
  353. }
  354. {
  355. _id: "blog_post_6"
  356. type: "blog_post"
  357. domain: "borbad.s5l.ru"
  358. language: "ru"
  359. title: "Детская программа: Музыкальная сказка"
  360. content: "# Волшебный мир музыки для детей\n\n## Новая постановка\n\nТеатральная студия Борбад представляет музыкальную сказку \"Волшебная флейта\" для детей от 3 до 10 лет.\n\n## Сюжет\n\nМаленькие зрители отправятся в увлекательное путешествие вместе с главными героями, где музыка помогает преодолевать препятствия и творить чудеса.\n\n## Образовательный аспект\n\nСпектакль знакомит детей с различными музыкальными инструментами и основными понятиями музыки.\n\n## Расписание\n\nПредставления проходят по воскресеньям в 11:00. Продолжительность - 45 минут."
  361. excerpt: "Музыкальная сказка для детей в театральной студии Борбад"
  362. image: "/assets/borbad.s5l.ru/posts/children-play.jpg"
  363. tags: ["дети", "театр", "образование"]
  364. category_id: "category_children"
  365. author: "Художественный руководитель"
  366. status: "published"
  367. meta_title: "Детская музыкальная сказка - Кохи Борбад"
  368. meta_description: "Музыкальная сказка для детей в театральной студии концертного зала Борбад"
  369. featured: true
  370. created_at: new Date(Date.now() - 12 * 24 * 60 * 60 * 1000).toISOString()
  371. updated_at: currentDate
  372. published_at: new Date(Date.now() - 12 * 24 * 60 * 60 * 1000).toISOString()
  373. views: 201
  374. }
  375. # Мероприятия (6 мероприятий)
  376. {
  377. _id: "event_1"
  378. type: "event"
  379. domain: "borbad.s5l.ru"
  380. language: "ru"
  381. title: "Симфонический концерт: Бетховен и Чайковский"
  382. content: "# Великие композиторы\n\n## Программа концерта\n\n- **Л. ван Бетховен** - Симфония №5\n- **П.И. Чайковский** - Лебединое озеро (сюита)\n- **П.И. Чайковский** - Щелкунчик (сюита)\n\n## Исполнители\n\nСимфонический оркестр Борбад под управлением дирижера Фарруха Саидова.\n\n## Продолжительность\n\nКонцерт длится 2 часа с одним антрактом.\n\n## Рекомендации\n\nРекомендуем приходить за 30 минут до начала концерта."
  383. event_date: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000).toISOString()
  384. end_date: new Date(Date.now() + 3 * 24 * 60 * 60 * 1000 + 2 * 60 * 60 * 1000).toISOString()
  385. location: "Большой зал"
  386. venue_id: "venue_main_hall"
  387. price: 500
  388. currency: "TJS"
  389. available_tickets: 45
  390. total_tickets: 300
  391. image: "/assets/borbad.s5l.ru/events/beethoven-concert.jpg"
  392. gallery: [
  393. "/assets/borbad.s5l.ru/gallery/concert1.jpg"
  394. "/assets/borbad.s5l.ru/gallery/concert2.jpg"
  395. ]
  396. tags: ["концерт", "симфоническая музыка", "классика", "Бетховен", "Чайковский"]
  397. category_id: "category_concerts"
  398. status: "upcoming"
  399. registration_required: true
  400. max_attendees: 300
  401. age_restriction: "6+"
  402. created_at: currentDate
  403. updated_at: currentDate
  404. }
  405. {
  406. _id: "event_2"
  407. type: "event"
  408. domain: "borbad.s5l.ru"
  409. language: "ru"
  410. title: "Танцевальный вечер: Народные традиции"
  411. content: "# Танцы народов мира\n\n## Программа\n\n- Таджикские народные танцы\n- Узбекские классические танцы\n- Афганские традиционные танцы\n- Современные хореографические постановки\n\n## Коллективы\n\n- Ансамбль \"Лола\"\n- Танцевальная группа \"Шарора\"\n- Гость из Кабула - ансамбль \"Ариана\"\n\n## Особенности\n\nЯркие костюмы, живая музыка и энергия традиционных танцев."
  412. event_date: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString()
  413. end_date: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000 + 2.5 * 60 * 60 * 1000).toISOString()
  414. location: "Большой зал"
  415. venue_id: "venue_main_hall"
  416. price: 400
  417. currency: "TJS"
  418. available_tickets: 120
  419. total_tickets: 300
  420. image: "/assets/borbad.s5l.ru/events/folk-dance.jpg"
  421. gallery: [
  422. "/assets/borbad.s5l.ru/gallery/dance1.jpg"
  423. "/assets/borbad.s5l.ru/gallery/dance2.jpg"
  424. ]
  425. tags: ["танец", "народный", "традиции", "фольклор"]
  426. category_id: "category_dance"
  427. status: "upcoming"
  428. registration_required: true
  429. max_attendees: 300
  430. age_restriction: "Все возраста"
  431. created_at: currentDate
  432. updated_at: currentDate
  433. }
  434. {
  435. _id: "event_3"
  436. type: "event"
  437. domain: "borbad.s5l.ru"
  438. language: "ru"
  439. title: "Джазовый вечер с Тимуром Якубовым"
  440. content: "# Современный джаз в Борбаде\n\n## О исполнителе\n\nТимур Якубов - известный джазовый пианист и композитор, лауреат международных конкурсов.\n\n## Программа\n\n- Авторские композиции\n- Джазовые стандарты\n- Импровизации\n- Совместные выступления с местными музыкантами\n\n## Стиль\n\nСовременный джаз с влиянием таджикских музыкальных традиций."
  441. event_date: new Date(Date.now() + 10 * 24 * 60 * 60 * 1000).toISOString()
  442. end_date: new Date(Date.now() + 10 * 24 * 60 * 60 * 1000 + 2 * 60 * 60 * 1000).toISOString()
  443. location: "Малый зал"
  444. venue_id: "venue_small_hall"
  445. price: 350
  446. currency: "TJS"
  447. available_tickets: 80
  448. total_tickets: 150
  449. image: "/assets/borbad.s5l.ru/events/jazz-evening.jpg"
  450. gallery: [
  451. "/assets/borbad.s5l.ru/gallery/jazz1.jpg"
  452. ]
  453. tags: ["джаз", "современная музыка", "импровизация"]
  454. category_id: "category_concerts"
  455. status: "upcoming"
  456. registration_required: true
  457. max_attendees: 150
  458. age_restriction: "12+"
  459. created_at: currentDate
  460. updated_at: currentDate
  461. }
  462. {
  463. _id: "event_4"
  464. type: "event"
  465. domain: "borbad.s5l.ru"
  466. language: "ru"
  467. title: "Выставка: Современное искусство Центральной Азии"
  468. content: "# Диалог культур\n\n## О выставке\n\nКрупная выставка, представляющая работы современных художников из Таджикистана, Узбекистана, Казахстана и Кыргызстана.\n\n## Куратор\n\nДоктор искусствоведения Зарина Каримова.\n\n## Темы\n\n- Идентичность в современном мире\n- Традиции и инновации\n- Экологические проблемы региона\n\n## Особенности\n\nИнтерактивные инсталляции и мультимедийные проекты."
  469. event_date: new Date(Date.now() + 2 * 24 * 60 * 60 * 1000).toISOString()
  470. end_date: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString()
  471. location: "Галерея Борбад"
  472. venue_id: "venue_gallery"
  473. price: 0
  474. currency: "TJS"
  475. available_tickets: 999
  476. total_tickets: 1000
  477. image: "/assets/borbad.s5l.ru/events/art-exhibition.jpg"
  478. gallery: [
  479. "/assets/borbad.s5l.ru/gallery/exhibition1.jpg"
  480. "/assets/borbad.s5l.ru/gallery/exhibition2.jpg"
  481. "/assets/borbad.s5l.ru/gallery/exhibition3.jpg"
  482. ]
  483. tags: ["выставка", "искусство", "современное", "Центральная Азия"]
  484. category_id: "category_exhibitions"
  485. status: "upcoming"
  486. registration_required: false
  487. max_attendees: 50
  488. age_restriction: "Все возраста"
  489. created_at: currentDate
  490. updated_at: currentDate
  491. }
  492. {
  493. _id: "event_5"
  494. type: "event"
  495. domain: "borbad.s5l.ru"
  496. language: "ru"
  497. title: "Мастер-класс: Основы вокала"
  498. content: "# Искусство пения для начинающих\n\n## О ведущем\n\nОперный певец Шариф Мухтаров, солист Национального театра оперы и балета.\n\n## Программа\n\n- Постановка дыхания\n- Основы вокальной техники\n- Работа с резонаторами\n- Подбор репертуара\n- Преодоление страха сцены\n\n## Для кого\n\nДля всех, кто хочет научиться правильно петь или улучшить свои вокальные навыки."
  499. event_date: new Date(Date.now() + 5 * 24 * 60 * 60 * 1000).toISOString()
  500. end_date: new Date(Date.now() + 5 * 24 * 60 * 60 * 1000 + 3 * 60 * 60 * 1000).toISOString()
  501. location: "Репетиционный зал"
  502. venue_id: "venue_rehearsal"
  503. price: 200
  504. currency: "TJS"
  505. available_tickets: 15
  506. total_tickets: 20
  507. image: "/assets/borbad.s5l.ru/events/vocal-workshop.jpg"
  508. gallery: [
  509. "/assets/borbad.s5l.ru/gallery/workshop1.jpg"
  510. ]
  511. tags: ["мастер-класс", "вокал", "образование", "музыка"]
  512. category_id: "category_education"
  513. status: "upcoming"
  514. registration_required: true
  515. max_attendees: 20
  516. age_restriction: "16+"
  517. created_at: currentDate
  518. updated_at: currentDate
  519. }
  520. {
  521. _id: "event_6"
  522. type: "event"
  523. domain: "borbad.s5l.ru"
  524. language: "ru"
  525. title: "Кинопоказ: Классика советского кино"
  526. content: "# Вечер памяти великого режиссера\n\n## Фильм\n\n\"Человек идет за солнцем\" (1961) режиссера Михаила Калика.\n\n## О фильме\n\nПоэтическая киноповесть о мальчике, который отправляется на поиски солнца. Символический фильм о детстве, мечтах и надеждах.\n\n## После показа\n\nОбсуждение с киноведом Дилшодом Рахматовым.\n\n## Особенности\n\nПоказ на оригинальной пленке с цифровым восстановлением."
  527. event_date: new Date(Date.now() + 14 * 24 * 60 * 60 * 1000).toISOString()
  528. end_date: new Date(Date.now() + 14 * 24 * 60 * 60 * 1000 + 2.5 * 60 * 60 * 1000).toISOString()
  529. location: "Малый зал"
  530. venue_id: "venue_small_hall"
  531. price: 150
  532. currency: "TJS"
  533. available_tickets: 95
  534. total_tickets: 150
  535. image: "/assets/borbad.s5l.ru/events/film-screening.jpg"
  536. gallery: [
  537. "/assets/borbad.s5l.ru/gallery/film1.jpg"
  538. ]
  539. tags: ["кино", "ретро", "советское кино", "культура"]
  540. category_id: "category_film"
  541. status: "upcoming"
  542. registration_required: true
  543. max_attendees: 150
  544. age_restriction: "12+"
  545. created_at: currentDate
  546. updated_at: currentDate
  547. }
  548. # Категории
  549. {
  550. _id: "category_news"
  551. type: "category"
  552. domain: "borbad.s5l.ru"
  553. language: "ru"
  554. name: "Новости"
  555. slug: "news"
  556. description: "Последние новости и анонсы концертного зала"
  557. image: "/assets/borbad.s5l.ru/categories/news.jpg"
  558. parent_id: null
  559. order: 1
  560. meta_title: "Новости - Кохи Борбад"
  561. meta_description: "Последние новости и анонсы концертного зала Борбад"
  562. active: true
  563. created_at: currentDate
  564. updated_at: currentDate
  565. }
  566. {
  567. _id: "category_concerts"
  568. type: "category"
  569. domain: "borbad.s5l.ru"
  570. language: "ru"
  571. name: "Концерты"
  572. slug: "concerts"
  573. description: "Музыкальные мероприятия и концерты"
  574. image: "/assets/borbad.s5l.ru/categories/concerts.jpg"
  575. parent_id: null
  576. order: 2
  577. meta_title: "Концерты - Кохи Борбад"
  578. meta_description: "Музыкальные мероприятия и концерты в концертном зале Борбад"
  579. active: true
  580. created_at: currentDate
  581. updated_at: currentDate
  582. }
  583. {
  584. _id: "category_exhibitions"
  585. type: "category"
  586. domain: "borbad.s5l.ru"
  587. language: "ru"
  588. name: "Выставки"
  589. slug: "exhibitions"
  590. description: "Художественные выставки и вернисажи"
  591. image: "/assets/borbad.s5l.ru/categories/exhibitions.jpg"
  592. parent_id: null
  593. order: 3
  594. meta_title: "Выставки - Кохи Борбад"
  595. meta_description: "Художественные выставки и вернисажи в галерее Борбад"
  596. active: true
  597. created_at: currentDate
  598. updated_at: currentDate
  599. }
  600. {
  601. _id: "category_education"
  602. type: "category"
  603. domain: "borbad.s5l.ru"
  604. language: "ru"
  605. name: "Образование"
  606. slug: "education"
  607. description: "Мастер-классы, лекции и образовательные программы"
  608. image: "/assets/borbad.s5l.ru/categories/education.jpg"
  609. parent_id: null
  610. order: 4
  611. meta_title: "Образовательные программы - Кохи Борбад"
  612. meta_description: "Мастер-классы, лекции и образовательные программы в концертном зале Борбад"
  613. active: true
  614. created_at: currentDate
  615. updated_at: currentDate
  616. }
  617. ]
  618. try
  619. createdCount = 0
  620. updatedCount = 0
  621. for doc in sampleData
  622. try
  623. # Проверяем существует ли документ
  624. existing = await @db.get(doc._id)
  625. doc._rev = existing._rev
  626. await @db.put(doc)
  627. updatedCount++
  628. debug.log "Обновлен документ: "+doc._id
  629. catch error
  630. if error.status is 404
  631. # Документ не существует, создаем новый
  632. await @db.put(doc)
  633. createdCount++
  634. debug.log "Создан документ: "+doc._id
  635. else
  636. throw error
  637. debug.log "Тестовые данные успешно созданы: создано "+createdCount+", обновлено "+updatedCount
  638. catch error
  639. debug.log "Ошибка при создании тестовых данных: "+error
  640. # Основной метод инициализации
  641. initialize: ->
  642. debug.log "Начало инициализации базы данных"
  643. await @createDatabaseIfNotExists()
  644. await @cleanupOldDocuments()
  645. await @setupDesignDocuments()
  646. await @createSampleData()
  647. debug.log "Инициализация базы данных завершена"
  648. # Экспорт класса
  649. module.exports = DatabaseSeeder
  650. # Если файл запущен напрямую
  651. if require.main is module
  652. seeder = new DatabaseSeeder('borbad_events')
  653. seeder.initialize().catch (error) ->
  654. debug.log "Критическая ошибка инициализации: "+error