95 lines
3.8 KiB
JavaScript
95 lines
3.8 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
const db = require('../database');
|
|
|
|
async function checkInstallation() {
|
|
const installedFile = fs.existsSync(path.join(__dirname, '..', 'data', '.installed'));
|
|
let currentVersion = '1.0.0';
|
|
let databaseExists = false;
|
|
let userExists = false;
|
|
let needsInstall = true;
|
|
|
|
try {
|
|
// Ler versão
|
|
const versionPath = path.join(__dirname, '..', 'version.txt');
|
|
if (fs.existsSync(versionPath)) {
|
|
currentVersion = fs.readFileSync(versionPath, 'utf8').trim();
|
|
}
|
|
|
|
// Verificar se arquivo .installed existe
|
|
if (installedFile) {
|
|
// Verificar se .env existe e tem configurações de banco
|
|
const envPath = path.join(__dirname, '..', '.env');
|
|
const hasEnvConfig = fs.existsSync(envPath);
|
|
|
|
if (hasEnvConfig) {
|
|
try {
|
|
// Tentar verificar conexão com banco (sem inicializar se não existir)
|
|
// Apenas verificar se pool existe e se consegue conectar
|
|
if (db.db) {
|
|
// Pool já existe, tentar query simples
|
|
try {
|
|
await db.get('SELECT 1 as test');
|
|
databaseExists = true;
|
|
|
|
// Verificar se existe pelo menos um usuário
|
|
const users = await db.all('SELECT COUNT(*) as count FROM users');
|
|
userExists = users && users[0] && users[0].count > 0;
|
|
} catch (error) {
|
|
// Banco não conectado ou erro
|
|
databaseExists = false;
|
|
userExists = false;
|
|
}
|
|
} else {
|
|
// Tentar inicializar se .env tem configurações
|
|
const envContent = fs.readFileSync(envPath, 'utf8');
|
|
if (envContent.includes('DB_HOST') && envContent.includes('DB_NAME')) {
|
|
// Recarregar .env
|
|
require('dotenv').config({ path: envPath });
|
|
|
|
// Tentar conectar
|
|
try {
|
|
await db.initDatabase();
|
|
databaseExists = true;
|
|
|
|
// Verificar se existe pelo menos um usuário
|
|
const users = await db.all('SELECT COUNT(*) as count FROM users');
|
|
userExists = users && users[0] && users[0].count > 0;
|
|
} catch (error) {
|
|
databaseExists = false;
|
|
userExists = false;
|
|
}
|
|
}
|
|
}
|
|
} catch (error) {
|
|
// Erro ao verificar banco
|
|
databaseExists = false;
|
|
userExists = false;
|
|
}
|
|
}
|
|
|
|
// Se tem arquivo .installed E banco E usuário, está instalado
|
|
needsInstall = !(installedFile && databaseExists && userExists);
|
|
}
|
|
} catch (error) {
|
|
// Em caso de erro, precisa instalar
|
|
needsInstall = true;
|
|
databaseExists = false;
|
|
userExists = false;
|
|
}
|
|
|
|
const pkg = require('../package.json');
|
|
|
|
return {
|
|
installed: !needsInstall,
|
|
needsInstall,
|
|
currentVersion,
|
|
databaseExists,
|
|
userExists,
|
|
newVersion: pkg.version || '2.0.0',
|
|
hasEnvFile: fs.existsSync(path.join(__dirname, '..', '.env'))
|
|
};
|
|
}
|
|
|
|
module.exports = { checkInstallation };
|