@@ -4,7 +4,9 @@ const logger = require('pelias-logger').get('geojsonify');
4
4
const collectDetails = require ( './geojsonify_place_details' ) ;
5
5
const _ = require ( 'lodash' ) ;
6
6
const Document = require ( 'pelias-model' ) . Document ;
7
+ const codec = require ( 'pelias-model' ) . codec ;
7
8
const field = require ( './fieldValue' ) ;
9
+ const decode_gid = require ( './decode_gid' ) ;
8
10
9
11
function geojsonifyPlaces ( params , docs ) {
10
12
@@ -39,13 +41,14 @@ function geojsonifyPlaces( params, docs ){
39
41
}
40
42
41
43
function geojsonifyPlace ( params , place ) {
44
+ const gid_components = decode_gid ( place . _id ) ;
42
45
// setup the base doc
43
46
const doc = {
44
- id : place . _id ,
45
- gid : new Document ( place . source , place . layer , place . _id ) . getGid ( ) ,
47
+ id : gid_components . id ,
48
+ gid : new Document ( place . source , place . layer , gid_components . id ) . getGid ( ) ,
46
49
layer : place . layer ,
47
50
source : place . source ,
48
- source_id : place . source_id ,
51
+ source_id : gid_components . id ,
49
52
bounding_box : place . bounding_box ,
50
53
lat : parseFloat ( place . center_point . lat ) ,
51
54
lng : parseFloat ( place . center_point . lon )
@@ -58,6 +61,22 @@ function geojsonifyPlace(params, place) {
58
61
// assign all the details info into the doc
59
62
Object . assign ( doc , collectDetails ( params , place ) ) ;
60
63
64
+ // add addendum data if available
65
+ // note: this should be the last assigned property, for aesthetic reasons.
66
+ if ( _ . has ( place , 'addendum' ) ) {
67
+ let addendum = { } ;
68
+ for ( let namespace in place . addendum ) {
69
+ try {
70
+ addendum [ namespace ] = codec . decode ( place . addendum [ namespace ] ) ;
71
+ } catch ( e ) {
72
+ logger . warn ( `doc ${ doc . gid } failed to decode addendum namespace ${ namespace } ` ) ;
73
+ }
74
+ }
75
+ if ( Object . keys ( addendum ) . length ) {
76
+ doc . addendum = addendum ;
77
+ }
78
+ }
79
+
61
80
return doc ;
62
81
}
63
82
0 commit comments