Implementation de la feature de gestion des fichiers sur les investissements

This commit is contained in:
ocroguennec committed 2026-08-29 18:49:01 +02:00
1 parent f6829dec9d
commit 8953d0bb35
21 files changed
+1729 -181

No files matched your search

+44
View File
@@ -2532,4 +2532,48 @@ db.exec('CREATE INDEX IF NOT EXISTS idx_pertes_inv ON investissement_pertes(inve
}
}
// ── Migration : table documents ───────────────────────────────────────────
// Pièces jointes de l'utilisateur (compte de login) — pour l'instant
// uniquement des documents rattachés à un investissement (entity_type
// ='investissement', entity_id=investissements.id), mais entity_type/
// entity_id/categorie restent génériques pour accueillir d'autres types de
// documents à l'avenir (demande Olivier 29/08/26). Quota de stockage et de
// nombre de documents par utilisateur — valeur fixe globale pour l'instant,
// cf. QUOTA_BYTES/QUOTA_COUNT dans backend/src/routes/documents.js.
db.exec(`
CREATE TABLE IF NOT EXISTS documents (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
categorie TEXT NOT NULL DEFAULT 'investissement',
entity_type TEXT,
entity_id INTEGER,
nom_affichage TEXT NOT NULL,
nom_original TEXT NOT NULL,
extension TEXT NOT NULL,
mime_type TEXT,
taille_octets INTEGER NOT NULL,
filename TEXT NOT NULL,
created_at TEXT NOT NULL DEFAULT (datetime('now')),
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
)
`);
db.exec('CREATE INDEX IF NOT EXISTS idx_documents_user ON documents(user_id)');
db.exec('CREATE INDEX IF NOT EXISTS idx_documents_entity ON documents(entity_type, entity_id)');
// ── Migration : quotas documentaires configurables (Admin > Général) ──────
// Demande Olivier 29/08/26 : plutôt qu'une valeur fixe codée en dur dans
// backend/src/routes/documents.js, le quota (par utilisateur — même valeur
// pour tous les comptes, pas de personnalisation individuelle pour l'instant)
// est stocké sur la ligne unique de smtp_config, comme le reste des
// paramètres généraux (app_name, app_url...), et lu à la volée par
// documents.js à chaque requête. Défauts alignés sur les anciennes
// constantes : 5 Go / 500 documents.
const smtpCols = db.prepare("PRAGMA table_info(smtp_config)").all().map(c => c.name);
if (!smtpCols.includes('documents_quota_bytes')) {
db.exec('ALTER TABLE smtp_config ADD COLUMN documents_quota_bytes INTEGER NOT NULL DEFAULT 5368709120'); // 5 Go (Gio)
}
if (!smtpCols.includes('documents_quota_count')) {
db.exec('ALTER TABLE smtp_config ADD COLUMN documents_quota_count INTEGER NOT NULL DEFAULT 500');
}
export default db;