CouchdbClass.coffee 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. class CouchDBService
  2. constructor: ->
  3. @baseUrl = 'http://localhost:5984'
  4. @dbName = 'kohi_borbad_events'
  5. @headers =
  6. 'Content-Type': 'application/json'
  7. 'Authorization': 'Basic ' + btoa('admin:password')
  8. @testData = [ {
  9. _id: 'event_classical_001'
  10. title: 'Концерт симфонического оркестра'
  11. date: '2025-10-15'
  12. time: '19:00'
  13. description: 'Произведения Чайковского и Рахманинова в исполнении Национального симфонического оркестра'
  14. image: '/images/event-classical.jpg'
  15. category: 'classical'
  16. price: 50
  17. venue: 'Большой зал'
  18. duration: '2 часа 30 минут'
  19. ageRestriction: '12+'
  20. availableTickets: 45
  21. isFeatured: true
  22. inSlider: true
  23. shortDescription: 'Шедевры классической музыки'
  24. cta: 'Купить билеты'
  25. }
  26. {
  27. _id: 'event_folk_001'
  28. title: 'Вечер таджикской народной музыки'
  29. date: '2025-10-20'
  30. time: '18:30'
  31. description: 'Выступление фольклорного ансамбля "Шашмаком" с программой традиционных мелодий и танцев'
  32. image: '/images/event-folk.jpg'
  33. category: 'folk'
  34. price: 30
  35. venue: 'Малый зал'
  36. duration: '2 часа'
  37. ageRestriction: '6+'
  38. availableTickets: 28
  39. isFeatured: true
  40. inSlider: true
  41. shortDescription: 'Традиционные мелодии и танцы Таджикистана'
  42. cta: 'Узнать больше'
  43. }
  44. {
  45. _id: 'event_jazz_001'
  46. title: 'Джазовый фестиваль "Borbad Jazz"'
  47. date: '2025-10-25'
  48. time: '20:00'
  49. description: 'Международные джазовые коллективы из Европы и Азии в уникальной акустике зала'
  50. image: '/images/event-jazz.jpg'
  51. category: 'jazz'
  52. price: 70
  53. venue: 'Большой зал'
  54. duration: '3 часа'
  55. ageRestriction: '16+'
  56. availableTickets: 15
  57. isFeatured: true
  58. inSlider: true
  59. shortDescription: 'Международные джазовые коллективы'
  60. cta: 'Смотреть расписание'
  61. }
  62. {
  63. _id: 'event_pop_001'
  64. title: 'Концерт популярной музыки'
  65. date: '2025-10-28'
  66. time: '19:30'
  67. description: 'Лучшие поп-исполнители Таджикистана представят новые хиты и классические композиции'
  68. image: '/images/event-pop.jpg'
  69. category: 'pop'
  70. price: 45
  71. venue: 'Большой зал'
  72. duration: '2 часа 15 минут'
  73. ageRestriction: '12+'
  74. availableTickets: 67
  75. isFeatured: true
  76. inSlider: false
  77. shortDescription: 'Лучшие поп-исполнители страны'
  78. cta: 'Купить билеты'
  79. }
  80. {
  81. _id: 'event_opera_001'
  82. title: 'Оперный гала-концерт'
  83. date: '2025-11-02'
  84. time: '18:00'
  85. description: 'Известные оперные певцы исполнят арии из мировых шедевров оперного искусства'
  86. image: '/images/event-opera.jpg'
  87. category: 'classical'
  88. price: 80
  89. venue: 'Большой зал'
  90. duration: '2 часа 45 минут'
  91. ageRestriction: '12+'
  92. availableTickets: 23
  93. isFeatured: true
  94. inSlider: false
  95. shortDescription: 'Арии из мировых оперных шедевров'
  96. cta: 'Забронировать места'
  97. }
  98. {
  99. _id: 'event_dance_001'
  100. title: 'Танцевальное шоу "Восточные ритмы"'
  101. date: '2025-11-05'
  102. time: '19:00'
  103. description: 'Традиционные и современные танцевальные коллективы представят красочное шоу'
  104. image: '/images/event-dance.jpg'
  105. category: 'dance'
  106. price: 35
  107. venue: 'Большой зал'
  108. duration: '2 часа 30 минут'
  109. ageRestriction: '6+'
  110. availableTickets: 89
  111. isFeatured: true
  112. inSlider: true
  113. shortDescription: 'Традиционные и современные танцы'
  114. cta: 'Посмотреть программу'
  115. }
  116. ]
  117. getAllEvents: ->
  118. new Promise (resolve, reject) =>
  119. try
  120. response = await fetch("#{@baseUrl}/#{@dbName}/_all_docs?include_docs=true", {
  121. method: 'GET'
  122. headers: @headers
  123. })
  124. if response.ok
  125. data = await response.json()
  126. events = data.rows.map (row) -> row.doc
  127. resolve(events.filter (event) -> !event._id.startsWith('_design/'))
  128. else
  129. debug.log "Ошибка получения мероприятий: "+response.statusText
  130. resolve(@testData)
  131. catch error
  132. debug.log "Ошибка подключения к CouchDB: "+error
  133. resolve(@testData)
  134. getEventById: (id) ->
  135. new Promise (resolve, reject) =>
  136. try
  137. response = await fetch("#{@baseUrl}/#{@dbName}/#{id}", {
  138. method: 'GET'
  139. headers: @headers
  140. })
  141. if response.ok
  142. event = await response.json()
  143. resolve(event)
  144. else
  145. debug.log "Ошибка получения мероприятия: "+response.statusText
  146. resolve(@testData.filter (a)->
  147. (a.id == id)?true:false
  148. )
  149. catch error
  150. debug.log "Ошибка подключения к CouchDB: "+error
  151. resolve(@testData.filter (a)->
  152. (a.id == id)?true:false
  153. )
  154. module.exports = CouchDBService