54 lines
1.4 KiB
JavaScript
54 lines
1.4 KiB
JavaScript
/**
|
|
* Serve API
|
|
*/
|
|
const express = require('express')
|
|
|
|
// db connection pool
|
|
const db = require('./db')
|
|
|
|
// set up app
|
|
const app = express()
|
|
|
|
// building geometry by lat/lon - TODO join geometry against buildings
|
|
app.get('/buildings', function(req, res){
|
|
const { lng, lat } = req.query
|
|
db.query(
|
|
`SELECT
|
|
b.building_id as id,
|
|
b.building_doc as doc,
|
|
g.geometry_id as geometry_id
|
|
FROM buildings as b, geometries as g
|
|
WHERE
|
|
b.geometry_id = g.geometry_id
|
|
AND
|
|
ST_Intersects(
|
|
ST_Transform(
|
|
ST_SetSRID(ST_Point($1, $2), 4326),
|
|
3857
|
|
),
|
|
g.geometry_geom
|
|
)
|
|
LIMIT 1
|
|
`,
|
|
[lng, lat]
|
|
).then(function(data){
|
|
const rows = data.rows
|
|
if (rows.length){
|
|
const id = rows[0].id
|
|
const doc = rows[0].doc
|
|
const geometry_id = rows[0].geometry_id
|
|
console.log(lng, lat, id)
|
|
doc.id = id
|
|
doc.geometry_id = geometry_id
|
|
res.send(doc)
|
|
} else {
|
|
console.log(lng, lat, undefined)
|
|
res.status(404).send({error:'Not Found'})
|
|
}
|
|
}).catch(function(error){
|
|
console.error('Error:', error)
|
|
res.status(500).send({error:'Database error'})
|
|
})
|
|
})
|
|
|
|
app.listen(8081, () => console.log('API server listening on port 8081')) |