first push - rest API with handlers attached to methods
This commit is contained in:
commit
91ee1479b0
10 changed files with 1704 additions and 0 deletions
1
.env.example
Normal file
1
.env.example
Normal file
|
@ -0,0 +1 @@
|
|||
GEOCODING_API_KEY='your_api_key'
|
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
node_modules
|
||||
.env
|
||||
dist
|
1590
package-lock.json
generated
Normal file
1590
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
26
package.json
Normal file
26
package.json
Normal file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"name": "dropit",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"dev": "nodemon dist/index.js"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@types/body-parser": "^1.19.2",
|
||||
"@types/express": "^4.17.17",
|
||||
"axios": "^1.3.6",
|
||||
"body-parser": "^1.20.2",
|
||||
"express": "^4.18.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^18.16.0",
|
||||
"nodemon": "^2.0.22",
|
||||
"ts-node-dev": "^2.0.0",
|
||||
"typescript": "^5.0.4"
|
||||
}
|
||||
}
|
10
src/app.ts
Normal file
10
src/app.ts
Normal file
|
@ -0,0 +1,10 @@
|
|||
import express from 'express';
|
||||
import routes from './routes';
|
||||
|
||||
const app = express();
|
||||
|
||||
app.use(express.json());
|
||||
|
||||
app.use(routes);
|
||||
|
||||
export default app;
|
19
src/geocoding.ts
Normal file
19
src/geocoding.ts
Normal file
|
@ -0,0 +1,19 @@
|
|||
import axios from 'axios';
|
||||
const dotenv = require('dotenv');
|
||||
|
||||
dotenv.config();
|
||||
|
||||
const GEOCODING_API_KEY = process.env.GEOCODING_API_KEY;
|
||||
|
||||
export interface Address {
|
||||
street: string;
|
||||
line1: string;
|
||||
line2: string;
|
||||
country: string;
|
||||
postcode: string;
|
||||
}
|
||||
|
||||
export const resolveAddress = async (searchTerm: string): Promise<Address> => {
|
||||
const response = await axios.get(`https://api.geoapify.com/v1/geocode/search?text=${searchTerm}&apiKey=${GEOCODING_API_KEY}`);
|
||||
return response.data.features[0].properties;
|
||||
};
|
26
src/handlers.ts
Normal file
26
src/handlers.ts
Normal file
|
@ -0,0 +1,26 @@
|
|||
import { Request, Response } from 'express';
|
||||
|
||||
export const resolveAddressHandler = (req: Request, res: Response) => {
|
||||
// TODO: Implement resolve address functionality using
|
||||
|
||||
};
|
||||
|
||||
export const timeslotsHandler = (req: Request, res: Response) => {
|
||||
// TODO: Implement timeslots functionality
|
||||
};
|
||||
|
||||
export const deliveriesHandler = (req: Request, res: Response) => {
|
||||
// TODO: Implement deliveries functionality
|
||||
};
|
||||
|
||||
export const cancelDeliveryHandler = (req: Request, res: Response) => {
|
||||
// TODO: Implement cancel delivery functionality
|
||||
};
|
||||
|
||||
export const dailyDeliveriesHandler = (req: Request, res: Response) => {
|
||||
// TODO: Implement daily deliveries functionality
|
||||
};
|
||||
|
||||
export const weeklyDeliveriesHandler = (req: Request, res: Response) => {
|
||||
// TODO: Implement weekly deliveries functionality
|
||||
};
|
7
src/index.ts
Normal file
7
src/index.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
import app from './app';
|
||||
|
||||
const PORT = process.env.PORT || 3000;
|
||||
|
||||
app.listen(PORT, () => {
|
||||
console.log(`Server is running on port ${PORT}`);
|
||||
});
|
13
src/routes.ts
Normal file
13
src/routes.ts
Normal file
|
@ -0,0 +1,13 @@
|
|||
import express from 'express';
|
||||
import { resolveAddressHandler, timeslotsHandler, deliveriesHandler, cancelDeliveryHandler, dailyDeliveriesHandler, weeklyDeliveriesHandler } from './handlers';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.post('/resolve-address', resolveAddressHandler);
|
||||
router.get('/deliveries/daily', dailyDeliveriesHandler);
|
||||
router.get('/deliveries/weekly', weeklyDeliveriesHandler);
|
||||
router.post('/timeslots', timeslotsHandler);
|
||||
router.post('/deliveries', deliveriesHandler);
|
||||
router.delete('/deliveries/:id', cancelDeliveryHandler);
|
||||
|
||||
export default router;
|
9
tsconfig.json
Normal file
9
tsconfig.json
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"target": "es6",
|
||||
"module": "commonjs",
|
||||
"outDir": "dist",
|
||||
"esModuleInterop": true
|
||||
},
|
||||
"include": ["src/**/*"]
|
||||
}
|
Loading…
Reference in a new issue