# app/utils/pouch.coffee class PouchDBService constructor: (options = {}) -> {@localDbName, @remoteDbUrl, @appVersion} = options @localDb = null @remoteDb = null @syncHandler = null @initialized = false init: -> return Promise.resolve() if @initialized try # Инициализация локальной базы @localDb = new PouchDB(@localDbName or 'braer_color_cache') log 'Локальная PouchDB инициализирована' # Инициализация удаленной базы @remoteDb = new PouchDB(@remoteDbUrl, { skip_setup: false fetch: (url, opts) -> # Добавление обработки CORS и аутентификации opts.credentials = 'include' PouchDB.fetch(url, opts) }) # Настройка непрерывной синхронизации:cite[7] @syncHandler = PouchDB.sync(@localDb, @remoteDb, { live: true, retry: true, filter: (doc) => @shouldSyncDocument(doc) }) .on 'change', (info) => log 'Синхронизация: данные изменены', info .on 'error', (err) => log 'Ошибка синхронизации:', err @initialized = true log 'PouchDB сервис полностью инициализирован' return Promise.resolve() catch error log 'Критическая ошибка инициализации PouchDB:', error return Promise.reject(error)