feat: migrate to postgres and dockerize app
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const db = require('../database');
|
||||
|
||||
async function checkInstallation() {
|
||||
const installedFile = fs.existsSync(path.join(__dirname, '..', '.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_TYPE=sqlite') || (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 };
|
||||
Reference in New Issue
Block a user