parent
0862706ae8
commit
33f783d6b6
5 changed files with 138 additions and 0 deletions
@ -0,0 +1,68 @@ |
||||
const { spawnSync } = require('child_process'); |
||||
|
||||
const SERVER_PATHS = require('./consts/SERVER_PATHS'); |
||||
|
||||
const execStrikerAccessDatabase = ( |
||||
args, |
||||
options = { |
||||
timeout: 10000, |
||||
encoding: 'utf-8', |
||||
}, |
||||
) => { |
||||
const { error, stdout, stderr } = spawnSync( |
||||
SERVER_PATHS.usr.sbin['striker-access-database'].self, |
||||
args, |
||||
options, |
||||
); |
||||
|
||||
if (error) { |
||||
throw error; |
||||
} |
||||
|
||||
if (stderr) { |
||||
throw new Error(stderr); |
||||
} |
||||
|
||||
let output; |
||||
|
||||
try { |
||||
output = JSON.parse(stdout); |
||||
} catch (stdoutParseError) { |
||||
output = stdout; |
||||
|
||||
console.warn( |
||||
`Failed to parse striker-access-database output [${output}]; error: [${stdoutParseError}]`, |
||||
); |
||||
} |
||||
|
||||
return { |
||||
stdout: output, |
||||
}; |
||||
}; |
||||
|
||||
const accessDB = { |
||||
query: (query, accessMode, options) => { |
||||
const args = ['--query', query]; |
||||
|
||||
if (accessMode) { |
||||
args.push('--mode', accessMode); |
||||
} |
||||
|
||||
return execStrikerAccessDatabase(args, options); |
||||
}, |
||||
sub: (subName, subParams, options) => { |
||||
const args = ['--sub', subName]; |
||||
|
||||
if (subParams) { |
||||
args.push('--sub-params', JSON.stringify(subParams)); |
||||
} |
||||
|
||||
const { stdout } = execStrikerAccessDatabase(args, options); |
||||
|
||||
return { |
||||
stdout: stdout['sub_results'], |
||||
}; |
||||
}, |
||||
}; |
||||
|
||||
module.exports = accessDB; |
@ -0,0 +1,29 @@ |
||||
const accessDB = require('../../accessDB'); |
||||
|
||||
const buildGetFiles = (query) => (request, response) => { |
||||
console.log('Calling CLI script to get data.'); |
||||
|
||||
let queryStdout; |
||||
|
||||
try { |
||||
({ stdout: queryStdout } = accessDB.query( |
||||
typeof query === 'function' ? query(request) : query, |
||||
)); |
||||
} catch (queryError) { |
||||
console.log(`Query error: ${queryError}`); |
||||
|
||||
response.status(500).send(); |
||||
} |
||||
|
||||
console.log( |
||||
`Query stdout (type=[${typeof queryStdout}]): ${JSON.stringify( |
||||
queryStdout, |
||||
null, |
||||
2, |
||||
)}`,
|
||||
); |
||||
|
||||
response.json(queryStdout); |
||||
}; |
||||
|
||||
module.exports = buildGetFiles; |
@ -0,0 +1,24 @@ |
||||
const buildGetFiles = require('./buildGetFiles'); |
||||
|
||||
const getFileDetail = buildGetFiles( |
||||
(request) => |
||||
`SELECT
|
||||
fil.file_uuid, |
||||
fil.file_name, |
||||
fil.file_size, |
||||
fil.file_type, |
||||
fil.file_md5sum, |
||||
fil_loc.file_location_uuid, |
||||
fil_loc.file_location_active, |
||||
anv.anvil_uuid, |
||||
anv.anvil_name, |
||||
anv.anvil_description |
||||
FROM files AS fil |
||||
JOIN file_locations AS fil_loc |
||||
ON fil.file_uuid = fil_loc.file_location_file_uuid |
||||
JOIN anvils AS anv |
||||
ON fil_loc.file_location_anvil_uuid = anv.anvil_uuid |
||||
WHERE fil.file_uuid = '${request.params.fileUUID}';`,
|
||||
); |
||||
|
||||
module.exports = getFileDetail; |
@ -0,0 +1,12 @@ |
||||
const buildGetFiles = require('./buildGetFiles'); |
||||
|
||||
const getFilesOverview = buildGetFiles(` |
||||
SELECT |
||||
file_uuid, |
||||
file_name, |
||||
file_size, |
||||
file_type, |
||||
file_md5sum |
||||
FROM files;`);
|
||||
|
||||
module.exports = getFilesOverview; |
Loading…
Reference in new issue