Merge remote-tracking branch 'origin/api' into backend
This commit is contained in:
commit
f0b379a379
6 changed files with 1950 additions and 0 deletions
|
|
@ -0,0 +1,9 @@
|
||||||
|
FROM node:18
|
||||||
|
|
||||||
|
COPY ./* /app/
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
RUN npm install
|
||||||
|
|
||||||
|
ENTRYPOINT ["npm", "run"]
|
||||||
|
CMD ["prod"]
|
||||||
1857
backend/api/package-lock.json
generated
Normal file
1857
backend/api/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
26
backend/api/package.json
Normal file
26
backend/api/package.json
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
"name": "express-api",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"type": "module",
|
||||||
|
"scripts": {
|
||||||
|
"build": "tsc",
|
||||||
|
"dev": "ts-node-esm src/app.ts",
|
||||||
|
"prod": "tsc && node build/app.ts"
|
||||||
|
},
|
||||||
|
"author": "jweissen",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"body-parser": "^1.20.1",
|
||||||
|
"express": "^4.18.2",
|
||||||
|
"helmet": "^6.0.1",
|
||||||
|
"morgan": "^1.10.0",
|
||||||
|
"pg-promise": "^10.15.4",
|
||||||
|
"ts-node": "^10.9.1",
|
||||||
|
"typescript": "^4.9.3"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/express": "^4.17.14",
|
||||||
|
"@types/node": "^18.11.9"
|
||||||
|
}
|
||||||
|
}
|
||||||
31
backend/api/src/app.ts
Normal file
31
backend/api/src/app.ts
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
import express from 'express';
|
||||||
|
|
||||||
|
import pgPromise from "pg-promise";
|
||||||
|
import helmet from "helmet";
|
||||||
|
import bodyParser from "body-parser";
|
||||||
|
import morgan from 'morgan';
|
||||||
|
|
||||||
|
const app = express()
|
||||||
|
const port = 3000
|
||||||
|
|
||||||
|
app.use(helmet())
|
||||||
|
|
||||||
|
// configure & use logger
|
||||||
|
let morganFormatted = morgan('[:date[iso]] :method :url - :status')
|
||||||
|
app.use(morganFormatted);
|
||||||
|
|
||||||
|
// init database connection
|
||||||
|
const pgp = pgPromise({});
|
||||||
|
const db = pgp('postgres://postgres:postgres@localhost:5432/rr')
|
||||||
|
|
||||||
|
|
||||||
|
app.get('/highscore', async (req, res) => {
|
||||||
|
let data = await db.any(
|
||||||
|
'SELECT * FROM lb_highscore;'
|
||||||
|
)
|
||||||
|
res.send(data)
|
||||||
|
})
|
||||||
|
|
||||||
|
app.listen(port, () => {
|
||||||
|
morganFormatted.log(`Server started at http://localhost:3000`);
|
||||||
|
})
|
||||||
16
backend/api/src/exampleEndpoints.ts
Normal file
16
backend/api/src/exampleEndpoints.ts
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
import * as express from 'express';
|
||||||
|
import * as bodyParser from "body-parser";
|
||||||
|
|
||||||
|
let router = express.Router();
|
||||||
|
|
||||||
|
router.use(bodyParser.json())
|
||||||
|
|
||||||
|
router.get('/helloworld', (req, res) => {
|
||||||
|
res.json({message: "Hello World!"})
|
||||||
|
})
|
||||||
|
|
||||||
|
router.post('/echo', (req, res) => {
|
||||||
|
res.json(req.body)
|
||||||
|
})
|
||||||
|
|
||||||
|
module.exports = router
|
||||||
11
backend/api/tsconfig.json
Normal file
11
backend/api/tsconfig.json
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"module": "NodeNext",
|
||||||
|
"moduleResolution": "NodeNext",
|
||||||
|
"target": "ES2020",
|
||||||
|
"sourceMap": true,
|
||||||
|
"outDir": "build/"
|
||||||
|
},
|
||||||
|
"include": ["src/**/*"]
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue