class CouchDBService constructor: -> @baseUrl = 'http://localhost:5984' @dbName = 'kohi_borbad_events' @headers = 'Content-Type': 'application/json' 'Authorization': 'Basic ' + btoa('admin:password') @testData = [ { _id: 'event_classical_001' title: 'Концерт симфонического оркестра' date: '2025-10-15' time: '19:00' description: 'Произведения Чайковского и Рахманинова в исполнении Национального симфонического оркестра' image: '/images/event-classical.jpg' category: 'classical' price: 50 venue: 'Большой зал' duration: '2 часа 30 минут' ageRestriction: '12+' availableTickets: 45 isFeatured: true inSlider: true shortDescription: 'Шедевры классической музыки' cta: 'Купить билеты' } { _id: 'event_folk_001' title: 'Вечер таджикской народной музыки' date: '2025-10-20' time: '18:30' description: 'Выступление фольклорного ансамбля "Шашмаком" с программой традиционных мелодий и танцев' image: '/images/event-folk.jpg' category: 'folk' price: 30 venue: 'Малый зал' duration: '2 часа' ageRestriction: '6+' availableTickets: 28 isFeatured: true inSlider: true shortDescription: 'Традиционные мелодии и танцы Таджикистана' cta: 'Узнать больше' } { _id: 'event_jazz_001' title: 'Джазовый фестиваль "Borbad Jazz"' date: '2025-10-25' time: '20:00' description: 'Международные джазовые коллективы из Европы и Азии в уникальной акустике зала' image: '/images/event-jazz.jpg' category: 'jazz' price: 70 venue: 'Большой зал' duration: '3 часа' ageRestriction: '16+' availableTickets: 15 isFeatured: true inSlider: true shortDescription: 'Международные джазовые коллективы' cta: 'Смотреть расписание' } { _id: 'event_pop_001' title: 'Концерт популярной музыки' date: '2025-10-28' time: '19:30' description: 'Лучшие поп-исполнители Таджикистана представят новые хиты и классические композиции' image: '/images/event-pop.jpg' category: 'pop' price: 45 venue: 'Большой зал' duration: '2 часа 15 минут' ageRestriction: '12+' availableTickets: 67 isFeatured: true inSlider: false shortDescription: 'Лучшие поп-исполнители страны' cta: 'Купить билеты' } { _id: 'event_opera_001' title: 'Оперный гала-концерт' date: '2025-11-02' time: '18:00' description: 'Известные оперные певцы исполнят арии из мировых шедевров оперного искусства' image: '/images/event-opera.jpg' category: 'classical' price: 80 venue: 'Большой зал' duration: '2 часа 45 минут' ageRestriction: '12+' availableTickets: 23 isFeatured: true inSlider: false shortDescription: 'Арии из мировых оперных шедевров' cta: 'Забронировать места' } { _id: 'event_dance_001' title: 'Танцевальное шоу "Восточные ритмы"' date: '2025-11-05' time: '19:00' description: 'Традиционные и современные танцевальные коллективы представят красочное шоу' image: '/images/event-dance.jpg' category: 'dance' price: 35 venue: 'Большой зал' duration: '2 часа 30 минут' ageRestriction: '6+' availableTickets: 89 isFeatured: true inSlider: true shortDescription: 'Традиционные и современные танцы' cta: 'Посмотреть программу' } ] getAllEvents: -> new Promise (resolve, reject) => try response = await fetch("#{@baseUrl}/#{@dbName}/_all_docs?include_docs=true", { method: 'GET' headers: @headers }) if response.ok data = await response.json() events = data.rows.map (row) -> row.doc resolve(events.filter (event) -> !event._id.startsWith('_design/')) else debug.log "Ошибка получения мероприятий: "+response.statusText resolve(@testData) catch error debug.log "Ошибка подключения к CouchDB: "+error resolve(@testData) getEventById: (id) -> new Promise (resolve, reject) => try response = await fetch("#{@baseUrl}/#{@dbName}/#{id}", { method: 'GET' headers: @headers }) if response.ok event = await response.json() resolve(event) else debug.log "Ошибка получения мероприятия: "+response.statusText resolve(@testData.filter (a)-> (a.id == id)?true:false ) catch error debug.log "Ошибка подключения к CouchDB: "+error resolve(@testData.filter (a)-> (a.id == id)?true:false ) module.exports = CouchDBService