feat: migrate to postgres and dockerize app

This commit is contained in:
VPS 4 Builder
2026-05-24 04:57:33 +02:00
commit c38184653a
47 changed files with 13401 additions and 0 deletions
@@ -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 };