| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779 |
- # Подключение 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'
- @orderCounter = 0
- @currentYear = new Date().getFullYear()
- # Генератор ID для категорий
- generateCategoryId: (name, parentId = null, domain = null) ->
- slug = name[0] # Берем первый язык для генерации slug
- .toLowerCase()
- .replace(/[^a-z0-9а-яё]/g, '_')
- .replace(/_+/g, '_')
- .replace(/^_|_$/g, '')
-
- id = "category_"+slug
-
- if parentId
- parentSlug = parentId.replace(/^category_/, '')
- id += "_"+parentSlug
-
- if domain
- domainPart = domain.replace(/\./g, '_')
- id += "_"+domainPart
-
- return id
- # Генератор ID для заказов
- generateOrderId: ->
- @orderCounter++
- return "order_"+@currentYear+"_"+@orderCounter.toString().padStart(3, '0')
- # Генератор ID для блог постов
- generateBlogPostId: (title, domain = null) ->
- slug = title[0] # Берем первый язык для генерации slug
- .toLowerCase()
- .replace(/[^a-z0-9а-яё]/g, '_')
- .replace(/_+/g, '_')
- .replace(/^_|_$/g, '')
-
- year = new Date().getFullYear()
- id = "blog_post_"+slug+"_"+year
-
- if domain
- domainPart = domain.replace(/\./g, '_')
- id += "_"+domainPart
-
- return id
- # Генератор ID для мероприятий
- generateEventId: (title, eventDate, domain = null) ->
- slug = title[0] # Берем первый язык для генерации slug
- .toLowerCase()
- .replace(/[^a-z0-9а-яё]/g, '_')
- .replace(/_+/g, '_')
- .replace(/^_|_$/g, '')
-
- date = new Date(eventDate)
- year = date.getFullYear()
- month = (date.getMonth() + 1).toString().padStart(2, '0')
-
- id = "event_"+slug+"_"+year+"_"+month
-
- if domain
- domainPart = domain.replace(/\./g, '_')
- id += "_"+domainPart
-
- return id
- # Генератор ID для товаров
- generateProductId: (title, domain = null) ->
- slug = title[0] # Берем первый язык для генерации slug
- .toLowerCase()
- .replace(/[^a-z0-9а-яё]/g, '_')
- .replace(/_+/g, '_')
- .replace(/^_|_$/g, '')
-
- year = new Date().getFullYear()
- id = "product_"+slug+"_"+year
-
- if domain
- domainPart = domain.replace(/\./g, '_')
- id += "_"+domainPart
-
- return id
- # Генератор ID для слайдов
- generateSlideId: (order, domain = null) ->
- id = "slide_"+order.toString().padStart(2, '0')
-
- if domain
- domainPart = domain.replace(/\./g, '_')
- id += "_"+domainPart
-
- return id
- # Проверка существования базы данных
- 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
- 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
-
- docType = doc.type or 'unknown'
- if not documentsByType[docType]
- documentsByType[docType] = []
-
- documentsByType[docType].push(doc)
-
- for docType, docs of documentsByType
- if docs.length <= 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)
-
- 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
- # Создание иерархической структуры категорий с мультиязычностью
- createCategoryHierarchy: ->
- categories = [
- # Корневые категории
- {
- _id: @generateCategoryId(["Мероприятия", "Events", "Чорабиниҳо"], null, "borbad")
- type: "category"
- domain: ["borbad.s5l.ru", "concert-hall.tj"]
- language: ["ru", "en", "tj"]
- name: ["Мероприятия", "Events", "Чорабиниҳо"]
- slug: ["events", "events", "chorabinīho"]
- description: ["Все мероприятия концертного зала", "All concert hall events", "Ҳамаи чорабиниҳои ҳолли консерт"]
- image: [
- "/assets/borbad.s5l.ru/categories/events.jpg"
- "/assets/borbad.s5l.ru/categories/events.jpg"
- "/assets/borbad.s5l.ru/categories/events.jpg"
- ]
- icon: ["calendar", "calendar", "calendar"]
- parent_id: null
- parent_path: []
- level: 0
- order: 1
- children_count: 4
- meta_title: ["Мероприятия - Кохи Борбад", "Events - Borbad Concert Hall", "Чорабиниҳо - Ҳолли Борбад"]
- meta_description: ["Концерты, выставки и другие мероприятия в концертном зале Борбад", "Concerts, exhibitions and other events at Borbad Concert Hall", "Консертҳо, намоишҳо ва дигар чорабиниҳо дар ҳолли консертии Борбад"]
- active: true
- featured: true
- show_in_menu: true
- menu_order: 1
- color: ["#3B82F6", "#3B82F6", "#3B82F6"]
- created_at: new Date().toISOString()
- updated_at: new Date().toISOString()
- }
- {
- _id: @generateCategoryId(["Новости", "News", "Хабарҳо"], null, "borbad")
- type: "category"
- domain: ["borbad.s5l.ru"]
- language: ["ru", "en", "tj"]
- name: ["Новости", "News", "Хабарҳо"]
- slug: ["news", "news", "khabarho"]
- description: ["Новости и анонсы концертного зала", "News and announcements of the concert hall", "Хабарҳо ва эълонҳои ҳолли консерт"]
- image: [
- "/assets/borbad.s5l.ru/categories/news.jpg"
- "/assets/borbad.s5l.ru/categories/news.jpg"
- "/assets/borbad.s5l.ru/categories/news.jpg"
- ]
- icon: ["news", "news", "news"]
- parent_id: null
- parent_path: []
- level: 0
- order: 2
- children_count: 0
- meta_title: ["Новости - Кохи Борбад", "News - Borbad Concert Hall", "Хабарҳо - Ҳолли Борбад"]
- meta_description: ["Последние новости и анонсы концертного зала Борбад", "Latest news and announcements from Borbad Concert Hall", "Охирин хабарҳо ва эълонҳои ҳолли консертии Борбад"]
- active: true
- featured: false
- show_in_menu: true
- menu_order: 2
- color: ["#10B981", "#10B981", "#10B981"]
- created_at: new Date().toISOString()
- updated_at: new Date().toISOString()
- }
- # Подкатегории для "Мероприятия"
- {
- _id: @generateCategoryId(["Концерты", "Concerts", "Консертҳо"], "category_events_borbad", "borbad")
- type: "category"
- domain: ["borbad.s5l.ru", "concert-hall.tj"]
- language: ["ru", "en", "tj"]
- name: ["Концерты", "Concerts", "Консертҳо"]
- slug: ["concerts", "concerts", "konsert-ho"]
- description: ["Музыкальные концерты различных жанров", "Music concerts of various genres", "Консертҳои мусиқии навъҳои гуногун"]
- image: [
- "/assets/borbad.s5l.ru/categories/concerts.jpg"
- "/assets/borbad.s5l.ru/categories/concerts.jpg"
- "/assets/borbad.s5l.ru/categories/concerts.jpg"
- ]
- icon: ["music", "music", "music"]
- parent_id: "category_events_borbad"
- parent_path: ["category_events_borbad"]
- level: 1
- order: 1
- children_count: 3
- meta_title: ["Концерты - Кохи Борбад", "Concerts - Borbad Concert Hall", "Консертҳо - Ҳолли Борбад"]
- meta_description: ["Музыкальные концерты в концертном зале Борбад", "Music concerts at Borbad Concert Hall", "Консертҳои мусиқӣ дар ҳолли консертии Борбад"]
- active: true
- featured: true
- show_in_menu: true
- menu_order: 1
- color: ["#6366F1", "#6366F1", "#6366F1"]
- created_at: new Date().toISOString()
- updated_at: new Date().toISOString()
- }
- # Подкатегории для "Концерты"
- {
- _id: @generateCategoryId(["Классическая музыка", "Classical Music", "Мусиқии классикӣ"], "category_concerts_events_borbad", "borbad")
- type: "category"
- domain: ["borbad.s5l.ru", "concert-hall.tj"]
- language: ["ru", "en", "tj"]
- name: ["Классическая музыка", "Classical Music", "Мусиқии классикӣ"]
- slug: ["classical-music", "classical-music", "musiqii-klasikī"]
- description: ["Симфонические концерты и классические произведения", "Symphonic concerts and classical works", "Консертҳои симфонӣ ва осори классикӣ"]
- image: [
- "/assets/borbad.s5l.ru/categories/classical-music.jpg"
- "/assets/borbad.s5l.ru/categories/classical-music.jpg"
- "/assets/borbad.s5l.ru/categories/classical-music.jpg"
- ]
- icon: ["classical", "classical", "classical"]
- parent_id: "category_concerts_events_borbad"
- parent_path: ["category_events_borbad", "category_concerts_events_borbad"]
- level: 2
- order: 1
- children_count: 0
- meta_title: ["Классическая музыка - Кохи Борбад", "Classical Music - Borbad Concert Hall", "Мусиқии классикӣ - Ҳолли Борбад"]
- meta_description: ["Симфонические концерты и классические произведения", "Symphonic concerts and classical works", "Консертҳои симфонӣ ва осори классикӣ"]
- active: true
- featured: true
- show_in_menu: true
- menu_order: 1
- color: ["#3B82F6", "#3B82F6", "#3B82F6"]
- created_at: new Date().toISOString()
- updated_at: new Date().toISOString()
- }
- ]
-
- return categories
- # Создание тестовых данных для сайта с новой структурой
- createSampleData: ->
- currentDate = new Date().toISOString()
-
- sampleData = [
- # Доменные настройки
- {
- _id: "domain_settings_borbad_s5l_ru"
- type: "domain_settings"
- domain: "borbad.s5l.ru"
- name: ["Кохи Борбад - Концертный зал Душанбе", "Borbad Concert Hall - Dushanbe"]
- description: ["Официальный сайт концертного зала Борбад", "Official website of Borbad Concert Hall"]
- active: true
- priority: 1
- theme: "borbad"
- languages: ["ru", "en", "tj"]
- default_language: "ru"
- timezone: "Asia/Dushanbe"
- currency: "TJS"
- settings: {
- seo: {
- title_template: ["{page} - Кохи Борбад", "{page} - Borbad Concert Hall"]
- description: ["Концертный зал Борбад - культурный центр Душанбе", "Borbad Concert Hall - Dushanbe Cultural Center"]
- keywords: [["концерты", "мероприятия", "Душанбе", "культура"], ["concerts", "events", "Dushanbe", "culture"]]
- }
- social: {
- facebook: "https://facebook.com/borbad"
- instagram: "https://instagram.com/borbad"
- twitter: "https://twitter.com/borbad"
- }
- contact: {
- address: ["г. Душанбе, пр. Рудаки 22", "Rudaki Ave 22, Dushanbe"]
- phone: ["+992 37 123-45-67", "+992 37 123-45-67"]
- email: ["info@borbad.s5l.ru", "info@borbad.s5l.ru"]
- }
- features: {
- online_booking: true
- multi_language: true
- ecommerce: true
- }
- }
- created_at: currentDate
- updated_at: currentDate
- }
- # Добавляем иерархические категории
- ...@createCategoryHierarchy()
- # Блог посты с мультиязычными массивами
- {
- _id: @generateBlogPostId(["Открытие нового сезона 2024", "Opening of the new season 2024"], "borbad")
- type: "blog_post"
- domain: ["borbad.s5l.ru", "global"]
- language: ["ru", "en"]
- title: ["Открытие нового сезона 2024", "Opening of the new season 2024"]
- content: [
- "# Добро пожаловать в новый творческий сезон!\n\nМы рады объявить о начале нового сезона в концертном зале Борбад. В этом году нас ждут удивительные события и незабываемые впечатления.",
- "# Welcome to the new creative season!\n\nWe are pleased to announce the start of the new season at the Borbad Concert Hall. This year we have amazing events and unforgettable experiences awaiting us."
- ]
- excerpt: [
- "Новый творческий сезон 2024 года в концертном зале Борбад",
- "New creative season 2024 at the Borbad Concert Hall"
- ]
- seo: {
- description: [
- "Концертный зал Борбад открывает новый сезон 2024 года",
- "Borbad Concert Hall opens the 2024 season"
- ]
- keywords: [
- ["новости", "сезон", "анонс", "Борбад"],
- ["news", "season", "announcement", "Borbad"]
- ]
- title: [
- "Открытие нового сезона 2024 - Кохи Борбад",
- "Opening of the new season 2024 - Borbad Concert Hall"
- ]
- }
- image: [
- "/assets/borbad.s5l.ru/posts/season-opening.jpg"
- "/assets/borbad.s5l.ru/posts/season-opening.jpg"
- ]
- gallery: [
- [
- "/assets/borbad.s5l.ru/gallery/post1.jpg"
- "/assets/borbad.s5l.ru/gallery/post2.jpg"
- ],
- [
- "/assets/borbad.s5l.ru/gallery/post1.jpg"
- "/assets/borbad.s5l.ru/gallery/post2.jpg"
- ]
- ]
- tags: [
- ["новости", "сезон", "анонс"],
- ["news", "season", "announcement"]
- ]
- category_id: "category_news_borbad"
- category_path: ["category_news_borbad"]
- author: ["Администрация Борбад", "Borbad Administration"]
- status: "published"
- featured: true
- reading_time: [5, 5]
- created_at: currentDate
- updated_at: currentDate
- published_at: currentDate
- views: 156
- likes: 23
- shares: 45
- }
- # События (мероприятия) с мультиязычными данными
- {
- _id: @generateEventId(["Симфонический концерт: Бетховен и Чайковский", "Symphonic Concert: Beethoven and Tchaikovsky"], "2024-03-20T19:00:00.000Z", "borbad")
- type: "event"
- domain: ["borbad.s5l.ru", "concert-hall.tj"]
- language: ["ru", "en", "tj"]
- title: ["Симфонический концерт: Бетховен и Чайковский", "Symphonic Concert: Beethoven and Tchaikovsky", "Консерти симфонӣ: Бетховен ва Чайковский"]
- content: [
- "# Великие композиторы\n\n## Программа концерта\n\n- **Л. ван Бетховен** - Симфония №5\n- **П.И. Чайковский** - Лебединое озеро (сюита)\n- **П.И. Чайковский** - Щелкунчик (сюита)\n\n## Исполнители\n\nСимфонический оркестр Борбад под управлением дирижера Фарруха Саидова.",
- "# Great Composers\n\n## Concert Program\n\n- **L. van Beethoven** - Symphony No. 5\n- **P.I. Tchaikovsky** - Swan Lake (suite)\n- **P.I. Tchaikovsky** - The Nutcracker (suite)\n\n## Performers\n\nBorbad Symphony Orchestra conducted by Farrukh Saidov.",
- "# Оҳангсозони бузург\n\n## Барномаи консерт\n\n- **Л. ван Бетховен** - Симфония №5\n- **П.И. Чайковский** - Озори ҳоҷилагак (сюита)\n- **П.И. Чайковский** - Қозуқанд (сюита)\n\n## Иҷрокунандагон\n\nОркестри симфонии Борбад зери роҳбарии дирижёр Фаррух Саидов."
- ]
- excerpt: [
- "Симфонический концерт с произведениями Бетховена и Чайковского",
- "Symphonic concert with works by Beethoven and Tchaikovsky",
- "Консерти симфонӣ бо осори Бетховен ва Чайковский"
- ]
- seo: {
- description: [
- "Симфонический концерт в зале Борбад - классическая музыка",
- "Symphonic concert at Borbad Hall - classical music",
- "Консерти симфонӣ дар ҳолли Борбад - мусиқии классикӣ"
- ]
- keywords: [
- ["концерт", "симфоническая музыка", "классика", "Бетховен", "Чайковский"],
- ["concert", "symphonic music", "classical", "Beethoven", "Tchaikovsky"],
- ["консерт", "мусиқии симфонӣ", "классикӣ", "Бетховен", "Чайковский"]
- ]
- title: [
- "Симфонический концерт: Бетховен и Чайковский - Кохи Борбад",
- "Symphonic Concert: Beethoven and Tchaikovsky - Borbad Concert Hall",
- "Консерти симфонӣ: Бетховен ва Чайковский - Ҳолли Борбад"
- ]
- }
- image: [
- "/assets/borbad.s5l.ru/events/beethoven-concert.jpg"
- "/assets/borbad.s5l.ru/events/beethoven-concert.jpg"
- "/assets/borbad.s5l.ru/events/beethoven-concert.jpg"
- ]
- gallery: [
- [
- "/assets/borbad.s5l.ru/gallery/concert1.jpg"
- "/assets/borbad.s5l.ru/gallery/concert2.jpg"
- ],
- [
- "/assets/borbad.s5l.ru/gallery/concert1.jpg"
- "/assets/borbad.s5l.ru/gallery/concert2.jpg"
- ],
- [
- "/assets/borbad.s5l.ru/gallery/concert1.jpg"
- "/assets/borbad.s5l.ru/gallery/concert2.jpg"
- ]
- ]
- tags: [
- ["концерт", "симфоническая музыка", "классика", "Бетховен", "Чайковский"],
- ["concert", "symphonic music", "classical", "Beethoven", "Tchaikovsky"],
- ["консерт", "мусиқии симфонӣ", "классикӣ", "Бетховен", "Чайковский"]
- ]
- category_id: "category_classical_music_concerts_events_borbad"
- category_path: ["category_events_borbad", "category_concerts_events_borbad", "category_classical_music_concerts_events_borbad"]
- author: ["Симфонический оркестр Борбад", "Borbad Symphony Orchestra", "Оркестри симфонии Борбад"]
- status: "published"
- featured: true
- reading_time: [4, 4, 4]
-
- # Дополнительные поля для событий
- event_data: {
- event_date: "2024-03-20T19:00:00.000Z"
- end_date: "2024-03-20T21:00:00.000Z"
- location: ["Большой зал", "Main Hall", "Ҳолли асосӣ"]
- venue_id: "venue_main_hall_borbad"
- address: {
- street: ["пр. Рудаки 22", "Rudaki Ave 22", "хиёбони Рӯдакӣ 22"]
- city: ["Душанбе", "Dushanbe", "Душанбе"]
- country: ["Таджикистан", "Tajikistan", "Тоҷикистон"]
- }
- coordinates: {
- lat: 38.5732
- lng: 68.7734
- }
- price: [500, 500, 500]
- currency: "TJS"
- available_tickets: 45
- total_tickets: 300
- status: "upcoming"
- registration_required: true
- max_attendees: 300
- age_restriction: ["6+", "6+", "6+"]
- organizer: ["Симфонический оркестр Борбад", "Borbad Symphony Orchestra", "Оркестри симфонии Борбад"]
- performers: [
- ["Фаррух Саидов (дирижер)", "Солисты оркестра"],
- ["Farrukh Saidov (conductor)", "Orchestra soloists"],
- ["Фаррух Саидов (дирижёр)", "Солистони оркестр"]
- ]
- duration: 120
- }
-
- created_at: currentDate
- updated_at: currentDate
- published_at: currentDate
- views: 289
- }
- # Товары с мультиязычными данными
- {
- _id: @generateProductId(["Футболка с логотипом Борбад", "Borbad Logo T-shirt"], "borbad")
- type: "product"
- domain: ["shop.borbad.s5l.ru", "borbad.s5l.ru"]
- language: ["ru", "en"]
- title: ["Футболка с логотипом Борбад", "Borbad Logo T-shirt"]
- content: [
- "## Качественная хлопковая футболка\n\nРазмеры: S, M, L, XL\n\nМатериал: 100% хлопок\n\nУход: машинная стирка при 30°C",
- "## High-quality cotton t-shirt\n\nSizes: S, M, L, XL\n\nMaterial: 100% cotton\n\nCare: machine wash at 30°C"
- ]
- excerpt: [
- "Фирменная футболка концертного зала с логотипом",
- "Official concert hall t-shirt with logo"
- ]
- seo: {
- description: [
- "Футболка с логотипом концертного зала Борбад - сувениры",
- "T-shirt with Borbad concert hall logo - souvenirs"
- ]
- keywords: [
- ["футболка", "сувениры", "мерч", "Борбад"],
- ["t-shirt", "souvenirs", "merch", "Borbad"]
- ]
- title: [
- "Футболка с логотипом Борбад - Сувениры",
- "Borbad Logo T-shirt - Souvenirs"
- ]
- }
- image: [
- "/assets/borbad.s5l.ru/products/tshirt.jpg"
- "/assets/borbad.s5l.ru/products/tshirt.jpg"
- ]
- gallery: [
- [
- "/assets/borbad.s5l.ru/products/tshirt-front.jpg"
- "/assets/borbad.s5l.ru/products/tshirt-back.jpg"
- ],
- [
- "/assets/borbad.s5l.ru/products/tshirt-front.jpg"
- "/assets/borbad.s5l.ru/products/tshirt-back.jpg"
- ]
- ]
- tags: [
- ["одежда", "сувениры", "мерч"],
- ["clothing", "souvenirs", "merch"]
- ]
- category_id: "category_souvenirs_borbad"
- category_path: ["category_shop_borbad", "category_souvenirs_borbad"]
- author: ["Магазин Борбад", "Borbad Shop"]
- status: "published"
- featured: true
- reading_time: [2, 2]
-
- # Дополнительные поля для товаров
- product_data: {
- price: [250, 250]
- currency: "TJS"
- compare_price: [350, 350]
- sku: "TSH-BRB-001"
- inventory: 50
- status: "available"
- attributes: {
- sizes: [["S", "M", "L", "XL"], ["S", "M", "L", "XL"]]
- colors: [["белый", "черный", "красный"], ["white", "black", "red"]]
- material: [["100% хлопок"], ["100% cotton"]]
- brand: [["Борбад"], ["Borbad"]]
- }
- weight: 0.3
- dimensions: {
- length: 70
- width: 50
- height: 5
- }
- shipping: {
- free_shipping: [false, false]
- shipping_cost: [50, 50]
- }
- }
-
- created_at: currentDate
- updated_at: currentDate
- published_at: currentDate
- views: 134
- }
- # Слайдеры с мультиязычными данными
- {
- _id: @generateSlideId(1, "borbad")
- type: "slide"
- domain: ["borbad.s5l.ru", "concert-hall.tj"]
- language: ["ru", "en"]
- title: ["Добро пожаловать в Кохи Борбад", "Welcome to Borbad Concert Hall"]
- content: [
- "## Современный концертный зал в сердце Душанбе\n\nМесто, где встречаются искусство и культура",
- "## Modern concert hall in the heart of Dushanbe\n\nA place where art and culture meet"
- ]
- excerpt: [
- "Концертный зал Борбад - культурный центр Душанбе",
- "Borbad Concert Hall - Dushanbe Cultural Center"
- ]
- seo: {
- description: [
- "Концертный зал Борбад в Душанбе",
- "Borbad Concert Hall in Dushanbe"
- ]
- }
- image: [
- "/assets/borbad.s5l.ru/sliders/main-hall.jpg"
- "/assets/borbad.s5l.ru/sliders/main-hall.jpg"
- ]
- gallery: [[], []]
- tags: [
- ["слайдер", "главная"],
- ["slider", "main"]
- ]
- category_id: "category_sliders_borbad"
- category_path: ["category_sliders_borbad"]
- author: ["Администрация Борбад", "Borbad Administration"]
- status: "published"
- featured: false
- reading_time: [1, 1]
-
- # Дополнительные поля для слайдеров
- slide_data: {
- order: 1
- active: true
- button_text: ["Узнать больше", "Learn More"]
- button_link: ["/about", "/about"]
- button_style: "primary"
- text_color: ["#ffffff", "#ffffff"]
- text_position: ["center", "center"]
- overlay: [true, true]
- overlay_opacity: [0.4, 0.4]
- mobile_image: [
- "/assets/borbad.s5l.ru/sliders/main-hall-mobile.jpg"
- "/assets/borbad.s5l.ru/sliders/main-hall-mobile.jpg"
- ]
- start_date: "2024-01-01T00:00:00.000Z"
- end_date: "2024-12-31T23:59:59.000Z"
- target_audience: [["all"], ["all"]]
- }
-
- created_at: "2024-01-01T00:00:00.000Z"
- updated_at: currentDate
- published_at: "2024-01-01T00:00:00.000Z"
- views: 0
- }
- # Пользователи
- {
- _id: "user_admin_main"
- type: "user"
- domain: "global"
- email: "admin@borbad.s5l.ru"
- name: ["Администратор Борбад", "Borbad Administrator"]
- role: "admin"
- active: true
- permissions: ["read", "write", "delete", "admin"]
- profile: {
- avatar: [
- "/assets/borbad.s5l.ru/avatars/admin.jpg"
- "/assets/borbad.s5l.ru/avatars/admin.jpg"
- ]
- phone: ["+992 37 123-45-67", "+992 37 123-45-67"]
- position: ["Системный администратор", "System Administrator"]
- bio: ["Ответственный за техническую часть сайта", "Responsible for the technical part of the site"]
- }
- preferences: {
- language: "ru"
- notifications: true
- theme: "dark"
- timezone: "Asia/Dushanbe"
- }
- security: {
- last_password_change: "2024-01-01T00:00:00.000Z"
- two_factor_enabled: true
- login_attempts: 0
- }
- domains_access: ["borbad.s5l.ru", "concert-hall.tj"]
- created_at: "2024-01-01T00:00:00.000Z"
- updated_at: currentDate
- last_login: "2024-01-15T09:30:00.000Z"
- }
- ]
-
- 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
|