mirror of
https://github.com/R0m1k3/noteflow.git
synced 2026-10-16 11:48:19 +02:00
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:
5 files changed
+115
No files matched your search
@@ -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
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
@@ -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`
|
||||
Executable
+12
@@ -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 ==="
|
||||
Reference in new issue
Block a user