· 4 years ago · Apr 02, 2021, 06:34 AM
1// https://developer.mozilla.org/en-US/docs/Glossary/IIFE
2// inital script to populate skateparks in db - DO NOT RUN THIS SCRIPT IN PRODUCTION
3;(async () => {
4 require('dotenv').config();
5 const {db} = require('../db');
6 const {client} = require('../../mapsApi');
7 await require('../schema/dbReset')();
8
9 // hit API to get back our skateparks
10 client
11 .placesNearby({
12 params: {
13 location: { lat: 49.2827, lng: -123.1207 },
14 radius: 50000,
15 keyword: 'skatepark',
16 key: process.env.KEY,
17 },
18 timeout: 1000, // milliseconds
19 })
20 .then((r) => {
21 const places = r.data;
22
23 /* hit the details endpoint on places api to get more information for each place
24 * https://github.com/googlemaps/google-maps-services-js/blob/master/src/places/details.ts */
25 for (place of places.results) {
26 const myPlaceId = place.place_id;
27 const myFields = [
28 'name',
29 'place_id',
30 'formatted_address',
31 'formatted_phone_number',
32 'opening_hours',
33 'type',
34 'review',
35 'website',
36 'photo',
37 'geometry'
38 ]
39
40 client
41 .placeDetails({
42 params: {
43 place_id: myPlaceId,
44 fields: myFields,
45 key: process.env.KEY,
46 },
47 timeout: 1000, // milliseconds
48 })
49 .then((r) => {
50 const placeDetails = r.data;
51 insertAllParks(placeDetails, db);
52 insertReviews(placeDetails, db);
53 })
54 .catch((e) => {
55 console.log(e.response.data.error_message);
56 });
57 }
58 })
59
60 // insert allparks information into my all_skateparks table
61 const insertAllParks = function(placeDetails, db) {
62 const placeId = placeDetails.result.place_id;
63 console.log("YOO: ", placeId)
64 const name = placeDetails.result.name;
65 const formattedAddress = placeDetails.result.formatted_address;
66 const phone = placeDetails.result.formatted_phone_number;
67 const website = placeDetails.result.website;
68 const paramaters = [placeId, name, formattedAddress, phone, website];
69
70 const query = `
71 INSERT INTO all_skateparks(
72 place_id,
73 name,
74 formatted_address,
75 phone,
76 website
77 )
78 VALUES ($1, $2, $3, $4, $5)
79 `;
80 db.query(query, paramaters);
81 }
82
83 const insertReviews = function(placeDetails, db) {
84 const placeId = placeDetails.result.place_id;
85 console.log("YEE: ", placeId);
86 const reviews = placeDetails.result.reviews;
87
88 if (reviews) {
89 for (review of reviews) {
90 console.log("Review: ", placeId, review)
91 const authorName = review.author_name;
92 const authorUrl = review.author_url;
93 const language = review.language;
94 const profileUrl = review.profile_url;
95 const rating = review.rating;
96 const timeDescription = review.relative_time_description;
97 const text = review.text;
98 const time = review.time;
99 const paramaters = [
100 placeId,
101 authorName,
102 authorUrl,
103 language,
104 profileUrl,
105 rating,
106 timeDescription,
107 text,
108 time
109 ];
110
111 const query = `
112 INSERT INTO reviews(
113 place_id,
114 review_author,
115 review_author_url,
116 review_language,
117 review_profile_url,
118 review_rating,
119 relative_time_desc,
120 review_text,
121 review_time
122 )
123 VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)
124 `;
125 db.query(query, paramaters);
126 }
127 }
128 }
129})()