Compare commits
2 Commits
a35e1bf093
...
eed19a225f
Author | SHA1 | Date | |
---|---|---|---|
eed19a225f
|
|||
4d61358e03
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -8,6 +8,7 @@ node_modules
|
|||||||
# testing
|
# testing
|
||||||
coverage
|
coverage
|
||||||
*.sqlite3
|
*.sqlite3
|
||||||
|
data/
|
||||||
|
|
||||||
# production
|
# production
|
||||||
build/
|
build/
|
||||||
|
@ -1,9 +1,13 @@
|
|||||||
|
import { useState } from 'react';
|
||||||
|
|
||||||
import './App.css';
|
import './App.css';
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
|
let [content, setContent] = useState("Loading…")
|
||||||
|
fetch('/api/').then(res => res.json()).then(data => setContent(data['message']))
|
||||||
return (
|
return (
|
||||||
<div className="App">
|
<div className="App">
|
||||||
Hello world!
|
{content}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "cd client && npm run build",
|
"build": "cd client && npm run build",
|
||||||
"dev": "nodemon --exec npm start",
|
"dev": "nodemon --exec npm start",
|
||||||
|
"import": "node server/cli/import.js",
|
||||||
"migrate": "npm run migrate:up",
|
"migrate": "npm run migrate:up",
|
||||||
"migrate:up": "cd server && npx sequelize-cli db:migrate",
|
"migrate:up": "cd server && npx sequelize-cli db:migrate",
|
||||||
"migrate:undo": "cd server && npx sequelize-cli db:migrate:undo",
|
"migrate:undo": "cd server && npx sequelize-cli db:migrate:undo",
|
||||||
|
43
server/cli/import.js
Normal file
43
server/cli/import.js
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
const fs = require('fs')
|
||||||
|
const db = require("../models")
|
||||||
|
|
||||||
|
const Airport = db['Airport']
|
||||||
|
const Flight = db['Flight']
|
||||||
|
|
||||||
|
db.sequelize.sync().then(() => (async () => {
|
||||||
|
// Refresh airport data
|
||||||
|
let airportData = await fs.promises.readFile(`${__dirname}/../data/airports.json`, 'utf-8')
|
||||||
|
airportData = JSON.parse(airportData)
|
||||||
|
|
||||||
|
let icao_codes = []
|
||||||
|
let iata_codes = []
|
||||||
|
let results = await Airport.findAll({attributes: ['icao_code', 'iata_code']})
|
||||||
|
for (let result of results) {
|
||||||
|
if (result.icao_code)
|
||||||
|
icao_codes.push(result.icao_code)
|
||||||
|
if (result.iata_code)
|
||||||
|
iata_codes.push(result.iata_code)
|
||||||
|
}
|
||||||
|
// Import all not-imported airports
|
||||||
|
await Airport.bulkCreate(airportData['response'].filter(airport => !icao_codes.includes(airport.icao_code)
|
||||||
|
&& !iata_codes.includes(airport.iata_code)))
|
||||||
|
|
||||||
|
// Import flight routes per departure
|
||||||
|
let airports = await Airport.findAll({attributes: ['icao_code']})
|
||||||
|
for (let airport of airports) {
|
||||||
|
const airportRoutesFile = `${__dirname}/../data/routes/${airport.icao_code}.json`
|
||||||
|
// Ignore unexisting files
|
||||||
|
if (!(await fs.promises.stat(airportRoutesFile).catch(() => false)))
|
||||||
|
continue
|
||||||
|
|
||||||
|
// Read routes
|
||||||
|
let flightsData = await fs.promises.readFile(airportRoutesFile, 'utf-8')
|
||||||
|
flightsData = JSON.parse(flightsData)
|
||||||
|
|
||||||
|
// First remove old routes
|
||||||
|
await Flight.destroy({where: {dep_icao: airport.icao_code}})
|
||||||
|
|
||||||
|
// Then import new routes
|
||||||
|
await Flight.bulkCreate(flightsData['response'])
|
||||||
|
}
|
||||||
|
})())
|
@ -19,7 +19,7 @@ app.get("/api", (req, res) => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
app.get("/api/airports", (req, res) => {
|
app.get("/api/airports", (req, res) => {
|
||||||
res.json(Airport.findAll())
|
Airport.findAll().then(airports => res.json(airports))
|
||||||
})
|
})
|
||||||
|
|
||||||
app.get("/api/airport/:id", (req, res) => {
|
app.get("/api/airport/:id", (req, res) => {
|
||||||
|
Reference in New Issue
Block a user