Jump to content

jkjk

Members
  • Posts

    1
  • Joined

  • Last visited

Posts posted by jkjk

  1. //=============================================================
    'use strict';
     
    require('dotenv').config();
     
    const express = require('express');
     
    const superagent = require('superagent');
     
    const cors = require('cors');
     
    const pg = require('pg');
     
    const client = new pg.Client();
     
    const PORT = process.env.PORT || 3000;
     
    const server = express();
     
    server.use(cors());
     
    //=====================================================
     
    //====================================================
    server.listen(PORT,()=>{
      console.log(`Listening on PORT ${PORT}`)
    })
    server.get('/', (req,res)=>{
      res.status(200).send('it is working');
    })
    //====================================================
     
    // creating the route
    server.get('/location'locationHandler)
     
    // creating the constructor
    function Location (city,locationData){
      this.search_query = city;
      this.formatted_query = locationData[0].display_name;
      this.latitude = locationData[0].lat;
      this.longitude = locationData[0].lon;
    }
     
    // creating the handler function
    function locationHandler(req,res){
    let city = req.query['city'];
    getLocation(city)
      .then(data =>{
        res.status(200).send(data)
      })
     
    }
     
    // creating the getLocation function
    function getLocation(city) {
      let sql = `SELECT * FROM location WHERE formatted_query = $1`;
      let values = [city];
      return client.query(sqlvalues)
        .then(results => {
          if (results.rowCount) {
            return results.rows[0];
          } else {// in case we don't have the data locally , we get it from the API
            const url = `https://us1.locationiq.com/v1/search.php?key=${GEOCODE_API_KEY}&q=${city}&format=json&limit=1`;
            return superagent.get(url)
              .then(data => dataStoreLocation(citydata.body));
          }
        });
    }
     
    function dataStoreLocation(citydata) {
      const location = new Location(citydata[0]);
      let SQL = `INSERT INTO locations (formatted_query, latitude, longitude) 
    VALUES ($1, $2, $3) 
    RETURNING *
    `;
    let values = [citylocation.latitudelocation.longitude];
      return client.query(SQLvalues)
        .then(results => results.rows[0]);
    }
     
    ===============================================
     
    server.use('*',(req,res)=>{
      res.status(404).send('page was not found');
    });
     
    server.use((error,res,req)=>{
      res.status(500).send(error);
    });
     
    client.on('error'error => { throw error; })
    client.connect().then(() => { server.listen(PORT, () => console.log(`Server runs on ${PORT}`)); })
×
×
  • Create New...