Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion routes/nodes.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,11 @@ module.exports = {
}

Promise.all([
knex('current_nodes').where('id', nodeId),
knex.select('current_nodes.*', 'users.display_name as user', 'users.id as uid')
.from('current_nodes')
.leftJoin('changesets', 'current_nodes.changeset_id', 'changesets.id')
.leftJoin('users', 'changesets.user_id', 'users.id')
.where('current_nodes.id', nodeId),
knex('current_node_tags').where('node_id', nodeId)
])
.then(function (result) {
Expand Down
34 changes: 27 additions & 7 deletions services/query-ways.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,40 @@ module.exports = function queryWays(knex, wayIds) {

// helper to make raw queries, because knex version of these
// simple selects was MUCH slower
function select(table, key, ids) {
function selectWithUserInfo(table, key, ids) {
if(ids.length === 0)
return Promise.resolve([]);
return knex.raw('select * from '+table +
' where '+key+' in ('+ ids.join(',') + ')')
return knex.raw('select a.*, c.display_name as user, c.id as uid from '+table +
' a left join changesets b on a.changeset_id = b.id' +
' left join users c on b.user_id = c.id ' +
' where a.'+key+' in ('+ ids.join(',') + ')')
.then(function (resp) {
return resp.rows;
});
}

function select(table, key, ids) {
if(ids.length === 0)
return Promise.resolve([]);
return knex.raw('select * from '+table +
' where '+key+' in ('+ ids.join(',') + ')')
.then(function (resp) {
return resp.rows;
});
}

// Query the desired ways and any way_nodes that are in those ways
// Also query any relations that those ways are a part of.

// TODO this currently does not query nodes that are part of relations,
// or other relations that are part of relations.

return Promise.all([
knex('current_ways').whereIn('id', wayIds),
knex.select('current_ways.*', 'users.display_name as user', 'users.id as uid')
.from('current_ways')
.leftJoin('changesets', 'current_ways.changeset_id', 'changesets.id')
.leftJoin('users', 'changesets.user_id', 'users.id')
.whereIn('current_ways.id', wayIds),
knex('current_way_nodes')
.orderBy('sequence_id', 'asc')
.whereIn('way_id', wayIds),
Expand All @@ -44,10 +60,10 @@ module.exports = function queryWays(knex, wayIds) {
var relationIds = _.pluck(result[2], 'relation_id');

return Promise.all(result.concat([
select('current_nodes', 'id', nodeIds),
selectWithUserInfo('current_nodes', 'id', nodeIds),
select('current_way_tags', 'way_id', wayIds),
select('current_node_tags', 'node_id', nodeIds),
select('current_relations', 'id', relationIds),
selectWithUserInfo('current_relations', 'id', relationIds),
select('current_relation_tags', 'relation_id', relationIds)
]));
})
Expand Down Expand Up @@ -84,7 +100,11 @@ module.exports = function queryWays(knex, wayIds) {

return result;

});
})
.catch(function (err) {
console.log(err);
res(Boom.wrap(err));
});

};

8 changes: 4 additions & 4 deletions services/xml.js
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,8 @@ var xml = {
version: node.version,
changeset: node.changeset_id,
timestamp: node.timestamp,
user: 'DevelopmentSeed',
uid: 1,
user: node.user,
uid: node.uid,
lat: node.latitude / RATIO,
lon: node.longitude / RATIO
});
Expand All @@ -140,8 +140,8 @@ var xml = {
version: way.version,
changeset: way.changeset_id,
timestamp: way.timestamp,
user: 'DevelopmentSeed',
uid: 1
user: way.user,
uid: way.uid
});

// Use the sequence ID to make sure nodes are ordered correctly.
Expand Down