mirror of
https://github.com/NuSkooler/enigma-bbs.git
synced 2025-06-11 07:04:32 +02:00
Allow filter on 1:n area tags in findFiles(). Add ability to calc sha256 if not already set (use sparingly!)
This commit is contained in:
parent
59da1a2461
commit
0f9e545b7b
1 changed files with 30 additions and 4 deletions
|
@ -11,7 +11,8 @@ const async = require('async');
|
||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const paths = require('path');
|
const paths = require('path');
|
||||||
const fse = require('fs-extra');
|
const fse = require('fs-extra');
|
||||||
const { unlink } = require('graceful-fs');
|
const { unlink, readFile } = require('graceful-fs');
|
||||||
|
const crypto = require('crypto');
|
||||||
|
|
||||||
const FILE_TABLE_MEMBERS = [
|
const FILE_TABLE_MEMBERS = [
|
||||||
'file_id', 'area_tag', 'file_sha256', 'file_name', 'storage_tag',
|
'file_id', 'area_tag', 'file_sha256', 'file_name', 'storage_tag',
|
||||||
|
@ -120,6 +121,26 @@ module.exports = class FileEntry {
|
||||||
}
|
}
|
||||||
return callback(null);
|
return callback(null);
|
||||||
},
|
},
|
||||||
|
function calcSha256IfNeeded(callback) {
|
||||||
|
if(self.fileSha256) {
|
||||||
|
return callback(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isUpdate) {
|
||||||
|
return callback(Errors.MissingParam('fileSha256 property must be set for updates!'));
|
||||||
|
}
|
||||||
|
|
||||||
|
readFile(self.filePath, (err, data) => {
|
||||||
|
if(err) {
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
const sha256 = crypto.createHash('sha256');
|
||||||
|
sha256.update(data);
|
||||||
|
self.fileSha256 = sha256.digest('hex');
|
||||||
|
return callback(null);
|
||||||
|
});
|
||||||
|
},
|
||||||
function startTrans(callback) {
|
function startTrans(callback) {
|
||||||
return fileDb.beginTransaction(callback);
|
return fileDb.beginTransaction(callback);
|
||||||
},
|
},
|
||||||
|
@ -169,8 +190,8 @@ module.exports = class FileEntry {
|
||||||
(err, trans) => {
|
(err, trans) => {
|
||||||
// :TODO: Log orig err
|
// :TODO: Log orig err
|
||||||
if(trans) {
|
if(trans) {
|
||||||
trans[err ? 'rollback' : 'commit'](err => {
|
trans[err ? 'rollback' : 'commit'](transErr => {
|
||||||
return cb(err);
|
return cb(transErr ? transErr : err);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
return cb(err);
|
return cb(err);
|
||||||
|
@ -459,7 +480,12 @@ module.exports = class FileEntry {
|
||||||
}
|
}
|
||||||
|
|
||||||
if(filter.areaTag && filter.areaTag.length > 0) {
|
if(filter.areaTag && filter.areaTag.length > 0) {
|
||||||
appendWhereClause(`f.area_tag = "${filter.areaTag}"`);
|
if(Array.isArray(filter.areaTag)) {
|
||||||
|
const areaList = filter.areaTag.map(t => `"${t}"`).join(', ');
|
||||||
|
appendWhereClause(`f.area_tag IN(${areaList})`);
|
||||||
|
} else {
|
||||||
|
appendWhereClause(`f.area_tag = "${filter.areaTag}"`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(filter.metaPairs && filter.metaPairs.length > 0) {
|
if(filter.metaPairs && filter.metaPairs.length > 0) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue