mirror of
https://gitlab.com/wgp/dougal/software.git
synced 2025-12-06 12:17:08 +00:00
Add map layer functions to database interface
This commit is contained in:
@@ -3,5 +3,6 @@ module.exports = {
|
||||
bbox: require('./bbox'),
|
||||
preplot: require('./preplot'),
|
||||
raw: require('./raw'),
|
||||
final: require('./final')
|
||||
final: require('./final'),
|
||||
layer: require('./layer')
|
||||
};
|
||||
|
||||
28
lib/www/server/lib/db/gis/project/layer/get.js
Normal file
28
lib/www/server/lib/db/gis/project/layer/get.js
Normal file
@@ -0,0 +1,28 @@
|
||||
|
||||
const { setSurvey } = require('../../../connection');
|
||||
|
||||
async function get (projectId, layerName, options = {}) {
|
||||
|
||||
const client = await setSurvey(projectId);
|
||||
|
||||
const text = `
|
||||
SELECT (data->>'data')::json data
|
||||
FROM file_data
|
||||
WHERE data->>'type' = 'map_layer'
|
||||
AND data->>'format' = 'geojson'
|
||||
AND data->>'name' = $1;
|
||||
`;
|
||||
|
||||
const values = [ layerName ];
|
||||
|
||||
const res = await client.query(text, values);
|
||||
client.release();
|
||||
|
||||
if (res.rows && res.rows.length) {
|
||||
return res.rows.map(row => row.data);
|
||||
} else {
|
||||
throw {status: 404};
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = get;
|
||||
5
lib/www/server/lib/db/gis/project/layer/index.js
Normal file
5
lib/www/server/lib/db/gis/project/layer/index.js
Normal file
@@ -0,0 +1,5 @@
|
||||
|
||||
module.exports = {
|
||||
list: require('./list'),
|
||||
get: require('./get')
|
||||
};
|
||||
25
lib/www/server/lib/db/gis/project/layer/list.js
Normal file
25
lib/www/server/lib/db/gis/project/layer/list.js
Normal file
@@ -0,0 +1,25 @@
|
||||
|
||||
const { setSurvey } = require('../../../connection');
|
||||
|
||||
async function list (projectId, options = {}) {
|
||||
|
||||
const client = await setSurvey(projectId);
|
||||
|
||||
const text = `
|
||||
SELECT DISTINCT data->>'name' name
|
||||
FROM file_data
|
||||
WHERE data->>'type' = 'map_layer'
|
||||
AND data->>'format' = 'geojson';
|
||||
`;
|
||||
|
||||
const res = await client.query(text);
|
||||
client.release();
|
||||
|
||||
if (res.rows && res.rows.length) {
|
||||
return res.rows.map(row => row.name);
|
||||
} else {
|
||||
throw {status: 404};
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = list;
|
||||
Reference in New Issue
Block a user