ソースを参照

Methode database => file

Arthur Brandao 5 年 前
コミット
45a2a7399f
2 ファイル変更61 行追加0 行削除
  1. 51 0
      node/src/convert/index.js
  2. 10 0
      node/src/convert/sql.js

+ 51 - 0
node/src/convert/index.js

@@ -0,0 +1,51 @@
+const fs = require('fs');
+const crypto = require('crypto');
+const sql = require('./sql');
+const db = require('../db').getDb();
+
+module.exports.convertDatabaseToFile = function (callback) {
+    db.all(sql.getAll, (err, rows) => {
+        if (err) {
+            if (global.verbose) {
+                console.error(err);
+            }
+            resolve(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;
+            }
+        });
+        // Fin tout est ok
+        callback(true);
+    });
+    callback(true);
+};
+
+module.exports.convertFileToDatabase = function (callback) {
+
+};

+ 10 - 0
node/src/convert/sql.js

@@ -0,0 +1,10 @@
+/*
+Liste des requetes SQL utilisée pour convertir la méthode de stockage des fichiers
+*/
+
+// Recuperation de tous le contenue des tables FILE et USERFILE
+module.exports.getAll = 'SELECT u.us_id as userId, u.us_name as username, f.fi_id as fileId, fi_name as filename, fi_hash as hash, fi_data as data ' +
+    'FROM FILE f INNER JOIN USERFILE uf on f.fi_id = uf.fi_id ' +
+    'INNER JOIN USER u on uf.us_id = u.us_id';
+
+module.exports.updateFileData = 'UPDATE FILE SET fi_data = ? Where fi_hash = ?;';