Merge pull request #6 from R0m1k3/claude/dockerized-notes-todo-app-011CV1roGRbnm21wgtB2LMxP

Claude/dockerized notes todo app 011 cv1ro g rbnm21wgt b2 l mx p
This commit is contained in:
LogiFlow authored and GitHub committed 2025-11-11 12:57:35 +01:00
commit b807c21503
5 files changed
+115

No files matched your search

+35
View File
@@ -191,6 +191,41 @@ DELETE /api/todos/:id
- File type whitelist
- SQL prepared statements
## 🔧 Dépannage
### Erreur "no such column: n.image_filename"
Cette erreur survient lorsque la base de données a été créée avec une ancienne version du schéma.
**Solution automatique (recommandée)** :
L'application détecte et ajoute automatiquement la colonne manquante au démarrage. Redéployez simplement :
```bash
docker-compose down
docker-compose up -d --build
```
**Solution manuelle** :
Si nécessaire, vous pouvez appliquer la migration manuellement :
```bash
docker exec notes-todo-app sh /app/migrations/run-migrations.sh
```
### Erreur de permissions sur les volumes Docker
Si vous rencontrez des erreurs SQLITE_CANTOPEN ou EACCES, recréez les volumes :
```bash
docker-compose down -v
docker-compose up -d --build
```
⚠️ Attention : Cela supprimera toutes les données existantes.
### L'application ne démarre pas
Vérifiez les logs :
```bash
docker-compose logs -f notes-todo-app
```
## 📝 Licence
MIT
+21
View File
@@ -81,6 +81,27 @@ function initDatabase() {
logger.info('✓ Tables de base de données créées avec succès');
// Migration: Ajouter image_filename si elle n'existe pas
db.all("PRAGMA table_info(notes)", (err, columns) => {
if (err) {
logger.error('Erreur lors de la vérification de la structure de la table notes:', err);
return;
}
const hasImageFilename = columns.some(col => col.name === 'image_filename');
if (!hasImageFilename) {
logger.info('Migration: Ajout de la colonne image_filename...');
db.run('ALTER TABLE notes ADD COLUMN image_filename TEXT', (err) => {
if (err) {
logger.error('Erreur lors de l\'ajout de la colonne image_filename:', err);
} else {
logger.info('✓ Colonne image_filename ajoutée avec succès');
}
});
}
});
// Créer l'utilisateur admin par défaut si la table est vide
db.get('SELECT COUNT(*) as count FROM users', async (err, row) => {
if (err) {
+11
View File
@@ -0,0 +1,11 @@
-- Migration pour ajouter la colonne image_filename à la table notes
-- À exécuter si vous obtenez l'erreur: "no such column: n.image_filename"
-- Vérifier la structure actuelle
-- SELECT sql FROM sqlite_master WHERE name='notes';
-- Ajouter la colonne image_filename si elle n'existe pas
ALTER TABLE notes ADD COLUMN image_filename TEXT;
-- Vérifier que la colonne a été ajoutée
-- SELECT * FROM notes LIMIT 1;
+36
View File
@@ -0,0 +1,36 @@
# Migrations de base de données
Ce dossier contient les scripts de migration SQL pour mettre à jour le schéma de la base de données.
## Utilisation
### Méthode 1 : Exécuter dans le container Docker
```bash
# Copier le script dans le container
docker cp migrations/run-migrations.sh notes-todo-app:/app/
# Exécuter la migration
docker exec notes-todo-app sh /app/run-migrations.sh
```
### Méthode 2 : Manuellement avec sqlite3
```bash
# Se connecter au container
docker exec -it notes-todo-app sh
# Exécuter la migration SQL
sqlite3 /app/data/notes.db < /path/to/migration.sql
```
### Méthode 3 : Recréer la base de données (⚠️ perte de données)
```bash
docker-compose down -v
docker-compose up -d --build
```
## Liste des migrations
- **001_add_image_filename.sql** : Ajoute la colonne `image_filename` à la table `notes`
+12
View File
@@ -0,0 +1,12 @@
#!/bin/bash
# Script pour exécuter les migrations SQL sur la base de données
DB_PATH="/app/data/notes.db"
echo "=== Exécution des migrations SQLite ==="
# Migration 001: Ajouter image_filename
echo "Migration 001: Ajout de la colonne image_filename..."
sqlite3 $DB_PATH "ALTER TABLE notes ADD COLUMN image_filename TEXT;" 2>/dev/null && echo "✓ Migration 001 appliquée" || echo "⚠ Migration 001 déjà appliquée ou erreur"
echo "=== Migrations terminées ==="