Selaa lähdekoodia

Correction requete SQL get et methode addFile

Loquicom 5 vuotta sitten
vanhempi
sitoutus
7fbce9c095
2 muutettua tiedostoa jossa 35 lisäystä ja 22 poistoa
  1. 29 16
      node/src/db.js
  2. 6 6
      node/src/sql.js

+ 29 - 16
node/src/db.js

@@ -119,12 +119,12 @@ Db.prototype.fileExist = function (username, filename) {
     });
 };
 
-Db.prototype.getFile = function (username, filename) {
-    if (typeof username !== 'string' || typeof filename !== 'string') {
+Db.prototype.getFile = function (username, fileId) {
+    if (typeof username !== 'string' || typeof fileId !== 'string') {
         return false;
     }
     return new Promise((resolve, reject) => {
-        this.db.all(sql.getFile, [username, filename], (err, rows) => {
+        this.db.all(sql.getFile, [username, fileId], (err, rows) => {
             if (err) {
                 if (global.verbose) {
                     console.error(err);
@@ -141,15 +141,20 @@ Db.prototype.addFile = function (username, filename, data) {
     if (typeof username !== 'string' || typeof filename !== 'string' || typeof data !== 'string') {
         return false;
     }
-    // Verification que le nom n'est pas deja pris pour l'utilisateur
-    this.fileExist(username, filename).then((result) => {
-        if (!result) {
-            // Ajoute les données de base du fichier
-            this._execute(sql.addFile, [filename, data]);
-            // Recupère l'id de l'insert
-            this.db.all(sql.lastId, (err, rows) => {
+    // Ajout du fichier
+    return new Promise((resolve, reject) => {
+        // Ajoute les données de base du fichier
+        this._execute(sql.addFile, [filename, data]);
+        // Recupère l'id du fichier
+        this.db.all(sql.lastId, (err, rows) => {
+            if (err) {
+                if (global.verbose) {
+                    console.error(err);
+                }
+                resolve(false);
+            } else {
                 const fileId = rows[0].lastId;
-                // Calcul le hash
+                //Calcul du hash
                 let hash = fileId + '-' + username + '-' + filename;
                 hash = crypto.createHash('md5').update(hash).digest('base64');
                 hash = hash.replace(/=/g, '');
@@ -157,13 +162,21 @@ Db.prototype.addFile = function (username, filename, data) {
                 this._execute(sql.addFileHash, [hash, fileId]);
                 // Recupération de l'utilisateur
                 this.getUser(username).then((user) => {
-                    // Ajoute le lien entre utilisateur et fichier
-                    this._execute(sql.addUserFile, [user.id, fileId]);
+                    if (user === false) {
+                        if (global.verbose) {
+                            console.error(err);
+                        }
+                        resolve(false);
+                    } else {
+                        // Ajoute le lien entre utilisateur et fichier
+                        this._execute(sql.addUserFile, [user.id, fileId]);
+                        // Retourne le hash du fichier
+                        resolve(hash);
+                    }
                 });
-            });
-        }
+            }
+        });
     });
-    return true;
 };
 
 Db.prototype.updateFile = function (username, filename, data) {

+ 6 - 6
node/src/sql.js

@@ -33,26 +33,26 @@ module.exports.getUser = 'SELECT us_id as id, us_name as name, us_pass as pass F
 module.exports.insertUser = 'INSERT INTO USER("us_name", "us_pass") VALUES (lower(?), ?);';
 
 // Liste les fichiers
-module.exports.listFile = 'SELECT fi_hash as hash, fi_name as name FROM FILE f ' 
+module.exports.listFile = 'SELECT fi_hash as hash, fi_name as name 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 '
     + 'WHERE us_name = lower(?);';
 
 // Compte le nombre de fichier avec un nom appartenant a un certain utilisateur
-module.exports.fileExist = 'SELECT count(*) as nb FROM FILE f ' 
+module.exports.fileExist = 'SELECT count(*) as nb 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 '
     + 'WHERE us_name = lower(?) '
     + 'AND fi_name = lower(?);';
 
-module.exports.getFile = 'SELECT fi_hash as hash, fi_name as name, fi_data as data FROM FILE f ' 
+module.exports.getFile = 'SELECT fi_hash as hash, fi_name as name, 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 '
     + 'WHERE us_name = lower(?) '
-    + 'AND fi_name = lower(?);';
+    + 'AND fi_hash = lower(?);';
 
 // Ajoute un fichier en base
-module.exports.addFile = 'INSERT INTO FILE("fi_name", "fi_data") VALUES (lower(?), ?);'
+module.exports.addFile = 'INSERT INTO FILE("fi_name", "fi_data") VALUES (lower(?), ?);';
 
 // Ajoute le hash du fichier
 module.exports.addFileHash = 'UPDATE FILE SET fi_hash = ? WHERE fi_id = ?;';
@@ -64,4 +64,4 @@ module.exports.addUserFile = 'INSERT INTO USERFILE("us_id", "fi_id") VALUES (?,
 module.exports.updateFile = 'UPDATE FILE SET fi_data = ? WHERE fi_hash = ?;';
 
 // Recupère le derniere id ajouté
-module.exports.lastId = 'SELECT last_insert_rowid() as lastId;';
+module.exports.lastId = 'SELECT last_insert_rowid() as lastId;';