mirror of
https://gitlab.com/wgp/dougal/software.git
synced 2025-12-06 11:17:08 +00:00
Add info API endpoint.
It queries a project's `info` table.
This commit is contained in:
@@ -125,6 +125,10 @@ app.map({
|
||||
get: [ mw.configuration.get ],
|
||||
// post: [ mw.label.post ],
|
||||
},
|
||||
'/project/:project/info/:path(*)': {
|
||||
get: [ mw.info.get ],
|
||||
// post: [ mw.info.post ],
|
||||
},
|
||||
//
|
||||
// '/project/:id/permissions/:mode(read|write)?': {
|
||||
// get: [ mw.permissions.get ],
|
||||
|
||||
@@ -8,5 +8,6 @@ module.exports = {
|
||||
gis: require('./gis'),
|
||||
label: require('./label'),
|
||||
navdata: require('./navdata'),
|
||||
configuration: require('./configuration')
|
||||
configuration: require('./configuration'),
|
||||
info: require('./info')
|
||||
};
|
||||
|
||||
0
lib/www/server/api/middleware/info/delete.js
Normal file
0
lib/www/server/api/middleware/info/delete.js
Normal file
18
lib/www/server/api/middleware/info/get.js
Normal file
18
lib/www/server/api/middleware/info/get.js
Normal file
@@ -0,0 +1,18 @@
|
||||
|
||||
const { info } = require('../../../lib/db');
|
||||
|
||||
module.exports = async function (req, res, next) {
|
||||
|
||||
try {
|
||||
res.status(200).json(await info.get(req.params.project, req.params.path, req.query));
|
||||
} catch (err) {
|
||||
if (err instanceof TypeError) {
|
||||
res.status(404).json(null);
|
||||
} else {
|
||||
next(err);
|
||||
return;
|
||||
}
|
||||
}
|
||||
next();
|
||||
|
||||
};
|
||||
8
lib/www/server/api/middleware/info/index.js
Normal file
8
lib/www/server/api/middleware/info/index.js
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
module.exports = {
|
||||
list: require('./list'),
|
||||
get: require('./get'),
|
||||
post: require('./post'),
|
||||
put: require('./put'),
|
||||
delete: require('./delete')
|
||||
}
|
||||
0
lib/www/server/api/middleware/info/list.js
Normal file
0
lib/www/server/api/middleware/info/list.js
Normal file
0
lib/www/server/api/middleware/info/post.js
Normal file
0
lib/www/server/api/middleware/info/post.js
Normal file
0
lib/www/server/api/middleware/info/put.js
Normal file
0
lib/www/server/api/middleware/info/put.js
Normal file
@@ -7,5 +7,6 @@ module.exports = {
|
||||
gis: require('./gis'),
|
||||
label: require('./label'),
|
||||
configuration: require('./configuration'),
|
||||
info: require('./info'),
|
||||
navdata: require('./navdata')
|
||||
};
|
||||
|
||||
0
lib/www/server/lib/db/info/delete.js
Normal file
0
lib/www/server/lib/db/info/delete.js
Normal file
30
lib/www/server/lib/db/info/get.js
Normal file
30
lib/www/server/lib/db/info/get.js
Normal file
@@ -0,0 +1,30 @@
|
||||
const { setSurvey } = require('../connection');
|
||||
|
||||
async function get (projectId, path, opts = {}) {
|
||||
const client = await setSurvey(projectId);
|
||||
const [key, ...subkey] = path.split("/");
|
||||
|
||||
const text = `
|
||||
SELECT value
|
||||
FROM info
|
||||
WHERE key = $1;
|
||||
`;
|
||||
|
||||
console.log("k, sk", key, subkey);
|
||||
const res = await client.query(text, [key]);
|
||||
client.release();
|
||||
|
||||
const value = res.rows[0] && res.rows[0].value;
|
||||
|
||||
if (subkey.length) {
|
||||
console.log("Reducing value");
|
||||
const res = subkey.reduce( (obj, idx) => typeof obj != "undefined" ? obj[idx] : obj, value);
|
||||
console.log(res);
|
||||
return res;
|
||||
} else {
|
||||
console.log("Returning value");
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = get;
|
||||
7
lib/www/server/lib/db/info/index.js
Normal file
7
lib/www/server/lib/db/info/index.js
Normal file
@@ -0,0 +1,7 @@
|
||||
|
||||
module.exports = {
|
||||
get: require('./get'),
|
||||
post: require('./post'),
|
||||
put: require('./put'),
|
||||
delete: require('./delete')
|
||||
}
|
||||
0
lib/www/server/lib/db/info/post.js
Normal file
0
lib/www/server/lib/db/info/post.js
Normal file
0
lib/www/server/lib/db/info/put.js
Normal file
0
lib/www/server/lib/db/info/put.js
Normal file
Reference in New Issue
Block a user