diff --git a/src/background/asyncForEach.js b/src/background/asyncForEach.js index 1f0a08e..3ab94ac 100644 --- a/src/background/asyncForEach.js +++ b/src/background/asyncForEach.js @@ -1,5 +1,5 @@ module.exports = async function asyncForEach(array, callback) { - for (let index = 0; index < array.length; index++) { - await callback(array[index], index, array) - } + for (let index = 0; index < array.length; index++) { + await callback(array[index], index, array) + } } \ No newline at end of file diff --git a/src/background/dbPatcher.js b/src/background/dbPatcher.js index 9bdb6ab..e743fcb 100644 --- a/src/background/dbPatcher.js +++ b/src/background/dbPatcher.js @@ -196,7 +196,7 @@ module.exports = async (callback, mainWindow, sphinxApp) => { let i = 1 const torrents = (await sphinx.query("SELECT COUNT(*) AS c FROM torrents"))[0].c - const torrentsArray = [] + let torrentsArray = [] await forBigTable(sphinx, 'torrents', async (torrent) => { console.log('remember index', torrent.id, torrent.name, '[', i, 'of', torrents, ']') @@ -247,12 +247,14 @@ module.exports = async (callback, mainWindow, sphinxApp) => { await sphinx.insertValues('torrents', torrent) }) + torrentsArray = null + console.log('optimizing torrents') if(patchWindow) patchWindow.webContents.send('optimize', {field: 'torrents'}) sphinx.query(`OPTIMIZE INDEX torrents`) await sphinxApp.waitOptimized('torrents') - + await setVersion(5) } } diff --git a/src/background/sphinx.js b/src/background/sphinx.js index 953ff71..632ead4 100644 --- a/src/background/sphinx.js +++ b/src/background/sphinx.js @@ -14,10 +14,10 @@ const writeSphinxConfig = (path, dbPath) => { index torrents { type = rt - path = ${dbPath}/database/torrents - - min_prefix_len = 3 - expand_keywords = 1 + path = ${dbPath}/database/torrents + + min_prefix_len = 3 + expand_keywords = 1 rt_attr_string = hash rt_attr_string = name @@ -143,78 +143,78 @@ const writeSphinxConfig = (path, dbPath) => { module.exports = (callback, dataDirectory, onClose) => { const start = (callback) => { - const sphinxPath = path.resolve(appPath('searchd')) - console.log('Sphinx Path:', sphinxPath) + const sphinxPath = path.resolve(appPath('searchd')) + console.log('Sphinx Path:', sphinxPath) - const sphinxConfigDirectory = dataDirectory - appConfig['dbPath'] = appConfig.dbPath && appConfig.dbPath.length > 0 ? appConfig.dbPath : sphinxConfigDirectory; - // on portable dir can move database directory - if(!fs.existsSync(appConfig.dbPath) && fs.existsSync(sphinxConfigDirectory)) - { - appConfig['dbPath'] = sphinxConfigDirectory - } - - const { isInitDb } = writeSphinxConfig(sphinxConfigDirectory, appConfig.dbPath) - - const config = `${sphinxConfigDirectory}/sphinx.conf` - const options = ['--config', config] - if(!(/^win/.test(process.platform))) - { - options.push('--nodetach') - } - const sphinx = spawn(sphinxPath, options) - // remeber initizalizing of db - sphinx.start = start - sphinx.isInitDb = isInitDb - sphinx.directoryPath = appConfig.dbPath - sphinx.directoryPathDb = appConfig.dbPath + '/database' - - const optimizeResolvers = {} - - sphinx.stdout.on('data', (data) => { - console.log(`sphinx: ${data}`) - if (data.includes('accepting connections')) { - console.log('catched sphinx start') - if(callback) - callback() - } - - const checkOptimized = String(data).match(/index ([\w]+): optimized/) - if(checkOptimized) + const sphinxConfigDirectory = dataDirectory + appConfig['dbPath'] = appConfig.dbPath && appConfig.dbPath.length > 0 ? appConfig.dbPath : sphinxConfigDirectory; + // on portable dir can move database directory + if(!fs.existsSync(appConfig.dbPath) && fs.existsSync(sphinxConfigDirectory)) { - if(optimizeResolvers[checkOptimized[1]]) - { - console.log('resolve optimizer', checkOptimized[1]) - optimizeResolvers[checkOptimized[1]]() + appConfig['dbPath'] = sphinxConfigDirectory + } + + const { isInitDb } = writeSphinxConfig(sphinxConfigDirectory, appConfig.dbPath) + + const config = `${sphinxConfigDirectory}/sphinx.conf` + const options = ['--config', config] + if(!(/^win/.test(process.platform))) + { + options.push('--nodetach') + } + const sphinx = spawn(sphinxPath, options) + // remeber initizalizing of db + sphinx.start = start + sphinx.isInitDb = isInitDb + sphinx.directoryPath = appConfig.dbPath + sphinx.directoryPathDb = appConfig.dbPath + '/database' + + const optimizeResolvers = {} + + sphinx.stdout.on('data', (data) => { + console.log(`sphinx: ${data}`) + if (data.includes('accepting connections')) { + console.log('catched sphinx start') + if(callback) + callback() } + + const checkOptimized = String(data).match(/index ([\w]+): optimized/) + if(checkOptimized) + { + if(optimizeResolvers[checkOptimized[1]]) + { + console.log('resolve optimizer', checkOptimized[1]) + optimizeResolvers[checkOptimized[1]]() + } + } + }) + + sphinx.on('close', (code, signal) => { + console.log(`sphinx closed with code ${code} and signal ${signal}`) + if(onClose && !sphinx.replaceOnClose) // sometime we don't want to call default callback + onClose() + if(sphinx.onClose) + sphinx.onClose() + }) + + sphinx.stop = (onFinish, replaceFinish) => { + console.log('sphinx closing...') + if(onFinish) + sphinx.onClose = onFinish + if(replaceFinish) + sphinx.replaceOnClose = true // sometime we don't want to call default callback + exec(`"${sphinxPath}" --config "${config}" --stopwait`) } - }) - sphinx.on('close', (code, signal) => { - console.log(`sphinx closed with code ${code} and signal ${signal}`) - if(onClose && !sphinx.replaceOnClose) // sometime we don't want to call default callback - onClose() - if(sphinx.onClose) - sphinx.onClose() - }) + sphinx.waitOptimized = (table) => new Promise((resolve) => { + optimizeResolvers[table] = () => { + delete optimizeResolvers[table]; + resolve() + } + }) - sphinx.stop = (onFinish, replaceFinish) => { - console.log('sphinx closing...') - if(onFinish) - sphinx.onClose = onFinish - if(replaceFinish) - sphinx.replaceOnClose = true // sometime we don't want to call default callback - exec(`"${sphinxPath}" --config "${config}" --stopwait`) - } - - sphinx.waitOptimized = (table) => new Promise((resolve) => { - optimizeResolvers[table] = () => { - delete optimizeResolvers[table]; - resolve() - } - }) - - return sphinx + return sphinx }