Files
rx.scoreodonto.com/dental-server/installer/check-installation.js
T
VPS 4 Builder 5b0d80bf22
continuous-integration/webhook Deploy concluido (rx.scoreodonto.com)
feat: reestruturacao de menus na sidebar, niveis de acesso e migracao para postgresql/dragonflydb
2026-05-26 21:08:48 +02:00

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 };