fix(db): optimization after patching
This commit is contained in:
@ -227,6 +227,8 @@ const startSphinx = (callback) => {
|
||||
}
|
||||
sphinx = spawn(sphinxPath, options)
|
||||
|
||||
const optimizeResolvers = {}
|
||||
|
||||
sphinx.stdout.on('data', (data) => {
|
||||
console.log(`sphinx: ${data}`)
|
||||
if (data.includes('accepting connections')) {
|
||||
@ -234,6 +236,16 @@ const startSphinx = (callback) => {
|
||||
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) => {
|
||||
@ -245,6 +257,13 @@ const startSphinx = (callback) => {
|
||||
console.log('sphinx closing...')
|
||||
exec(`"${sphinxPath}" --config "${config}" --stopwait`)
|
||||
}
|
||||
|
||||
sphinx.waitOptimized = (table) => new Promise((resolve) => {
|
||||
optimizeResolvers[table] = () => {
|
||||
delete optimizeResolvers[table];
|
||||
resolve()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// log autoupdate
|
||||
@ -365,7 +384,7 @@ app.on("ready", () => {
|
||||
callback.apply(null, arg)
|
||||
})
|
||||
}, app.getPath("userData"), app.getVersion(), env.name)
|
||||
}, mainWindow)
|
||||
}, mainWindow, sphinx)
|
||||
})
|
||||
});
|
||||
|
||||
|
@ -5,7 +5,7 @@ import { BrowserWindow } from "electron";
|
||||
import url from 'url'
|
||||
import path from 'path'
|
||||
|
||||
module.exports = (callback, mainWindow) => {
|
||||
module.exports = (callback, mainWindow, sphinxApp) => {
|
||||
const sphinx = mysql.createConnection({
|
||||
host : config.sphinx.host,
|
||||
port : config.sphinx.port
|
||||
@ -52,20 +52,7 @@ module.exports = (callback, mainWindow) => {
|
||||
patchWindow = new BrowserWindow({width: 800, height: 400, closable: false})
|
||||
|
||||
patchWindow.setMenu(null)
|
||||
}
|
||||
|
||||
const patch = async (version) => {
|
||||
console.log('db version', version)
|
||||
switch(version)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
console.log('patch db to version 2')
|
||||
openPatchWindow()
|
||||
let i = 1
|
||||
|
||||
if(patchWindow)
|
||||
{
|
||||
patchWindow.loadURL("data:text/html;charset=utf-8," + encodeURI(`
|
||||
<html>
|
||||
<head><title>Database patching...</title></head>
|
||||
@ -106,6 +93,9 @@ module.exports = (callback, mainWindow) => {
|
||||
ipcRenderer.on('reindex', (e, data) =>{
|
||||
document.getElementById('one').innerHTML = \`Updating \${data.torrent ? 'torrent': 'file'} \${data.index} of \${data.all} [\${data.field} index]\`
|
||||
})
|
||||
ipcRenderer.on('optimize', (e, data) =>{
|
||||
document.getElementById('one').innerHTML = \`Optimization for \${data.field}...\`
|
||||
})
|
||||
</script>
|
||||
<body>
|
||||
<svg fill='white' viewBox='0 0 264.725 264.725'><path d="M220.195,71.427c-0.589-7.654-9.135-15.619-17.979-16.209c-8.844-0.584-17.398,0.301-12.087,6.483
|
||||
@ -125,6 +115,16 @@ module.exports = (callback, mainWindow) => {
|
||||
`))
|
||||
}
|
||||
|
||||
const patch = async (version) => {
|
||||
console.log('db version', version)
|
||||
switch(version)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
console.log('patch db to version 2')
|
||||
openPatchWindow()
|
||||
let i = 1
|
||||
|
||||
const torrents = (await query("SELECT COUNT(*) AS c FROM torrents"))[0].c
|
||||
const files = (await query("SELECT COUNT(*) AS c FROM files"))[0].c
|
||||
|
||||
@ -149,6 +149,24 @@ module.exports = (callback, mainWindow) => {
|
||||
})
|
||||
await query(`UPDATE version SET version = 2 WHERE id = 1`)
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
openPatchWindow()
|
||||
|
||||
console.log('optimizing torrents')
|
||||
if(patchWindow)
|
||||
patchWindow.webContents.send('optimize', {field: 'torrents'})
|
||||
query(`OPTIMIZE INDEX torrents`)
|
||||
await sphinxApp.waitOptimized('torrents')
|
||||
|
||||
console.log('optimizing files')
|
||||
if(patchWindow)
|
||||
patchWindow.webContents.send('optimize', {field: 'files'})
|
||||
query(`OPTIMIZE INDEX files`)
|
||||
await sphinxApp.waitOptimized('files')
|
||||
|
||||
await query(`UPDATE version SET version = 3 WHERE id = 1`)
|
||||
}
|
||||
}
|
||||
console.log('db patch done')
|
||||
sphinx.destroy()
|
||||
|
Reference in New Issue
Block a user