There are over 100,000 flights a day, with millions of people and cargo being transferred around the world. With so many people and different carrier/agency groups, it can be hard to track where a person might be. In order to determine the flight path of a person, we must sort through all of their flight records.
Given a list of flight routes this service determines the start and end airport of the entire flight path.
Examples:
[["SFO", "EWR"]] => ["SFO", "EWR"]
[["ATL", "EWR"], ["SFO", "ATL"]] => ["SFO", "EWR"]
[["IND", "EWR"], ["SFO", "ATL"], ["GSO", "IND"], ["ATL", "GSO"]] => ["SFO", "EWR"]
Step 0. Install pre-commit:
pip install pre-commit
# For macOS users.
brew install pre-commitThen run pre-commit install to setup git hook scripts.
Used hooks can be found here.
NOTE
pre-commitaids in running checks (end of file fixing, markdown linting, go linting, runs go tests, json validation, etc.) before you perform your git commits.
Step 1. Install external tooling (golangci-lint, etc.):
make installStep 2. Setup project for local testing (code lint, runs tests, builds all needed binaries):
make allNOTE
All binaries can be found in
<project_root>/bindirectory. Usemake cleanto delete old binaries.
Step 3. Run server:
make run-serverand open http://localhost:8080/swagger/index.html to open Swagger UI.
Step 4. Run following example query or just explore the API via Swagger UI
curl -X 'POST' \
'http://localhost:8080/calculate' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '[
[
"A","B"
],
[
"B","C"
]
]'NOTE
Check Makefile for other useful commands.
Step 1. Run docker-compose to build and run the application as a Docker container:
docker-compose up -dand open http://0.0.0.0:8080/swagger/index.html to open Swagger UI.
@Description Trace start and end airport given a list of flight routes.
POST /calculate
Content-Type: application/json
Accept: application/jsonFor more info check Swagger UI after running the server.
NOTE
After modification of the API remember to run
make docsis order to re-generate the API documentation so that Swagger UI visualizes the up-to-date changes.