Arthur Brandao 5 жил өмнө
parent
commit
0a69e7b357
1 өөрчлөгдсөн 64 нэмэгдсэн , 30 устгасан
  1. 64 30
      node/src/convert/index.js

+ 64 - 30
node/src/convert/index.js

@@ -3,49 +3,83 @@ const crypto = require('crypto');
 const sql = require('./sql');
 const db = require('../db').getDb();
 
-module.exports.convertDatabaseToFile = function (callback) {
+function forEachFile(todo, callback) {
     db.all(sql.getAll, (err, rows) => {
         if (err) {
             if (global.verbose) {
                 console.error(err);
             }
-            resolve(false);
+            callback(false);
             return;
         }
         // Parcours chaque ligne
         rows.forEach((row) => {
-            // Creation du hash pour le nom du fichier
-            let hash = Date.now() + '-' + row.username + '-' + row.filename;
-            hash = crypto.createHash('md5').update(hash).digest('base64');
-            hash = hash.replace(/=/g, '').replace(/\//g, '');
-            const filename = './data/' + hash + '.fdata';
-            // Creation du fichier
-            try {
-                fs.writeFileSync(filename, row.data, {mode: 0o755});
-            } catch (err) {
-                if (global.verbose) {
-                    console.error(err);
-                }
-                callback(false);
-                return;
-            }
-            // Ajout du chemin en base
-            try {
-                db.run(sql.updateFileData, [filename, row.hash]);
-            } catch (err) {
-                if (global.verbose) {
-                    console.error(err);
-                }
-                callback(false);
-                return;
-            }
+            todo(row);
         });
-        // Fin tout est ok
+        // FIn tout est ok
         callback(true);
     });
-    callback(true);
+}
+
+module.exports.convertDatabaseToFile = function (callback) {
+    forEachFile((row) => {
+        // Creation du hash pour le nom du fichier
+        let hash = Date.now() + '-' + row.username + '-' + row.filename;
+        hash = crypto.createHash('md5').update(hash).digest('base64');
+        hash = hash.replace(/=/g, '').replace(/\//g, '');
+        const filename = './data/' + hash + '.fdata';
+        // Creation du fichier
+        try {
+            fs.writeFileSync(filename, row.data, {mode: 0o755});
+        } catch (err) {
+            if (global.verbose) {
+                console.error(err);
+            }
+            callback(false);
+            return;
+        }
+        // Ajout du chemin en base
+        try {
+            db.run(sql.updateFileData, [filename, row.hash]);
+        } catch (err) {
+            if (global.verbose) {
+                console.error(err);
+            }
+            callback(false);
+        }
+    }, callback);
 };
 
 module.exports.convertFileToDatabase = function (callback) {
-
+    forEachFile((row) => {
+        // Recupération des données du fichier
+        let data;
+        try {
+            data = fs.readFileSync(row.data);
+        } catch (err) {
+            if (global.verbose) {
+                console.error(err);
+            }
+            callback(false);
+        }
+        // Modification des données en base
+        try {
+            db.run(sql.updateFileData, [data.toString(), row.hash]);
+        } catch (err) {
+            if (global.verbose) {
+                console.error(err);
+            }
+            callback(false);
+            return;
+        }
+        // Suppr du fichier
+        try {
+            fs.unlinkSync(row.data);
+        } catch (err) {
+            if (global.verbose) {
+                console.error(err);
+            }
+            callback(false);
+        }
+    }, callback);
 };