working on openapi

This commit is contained in:
2023-03-01 20:25:30 +01:00
parent 5065a4b2fb
commit 98e1f7ef09
9 changed files with 114 additions and 58 deletions
-1
View File
@@ -3,7 +3,6 @@
"source.fixAll": true
},
"editor.formatOnSave": true,
"prettier.jsxSingleQuote": false,
"typescript.preferences.quoteStyle": "single",
"javascript.preferences.quoteStyle": "single",
"prettier.singleQuote": true,
+26
View File
@@ -7,6 +7,7 @@
"dependencies": {
"dotenv": "^16.0.3",
"express": "^4.18.2",
"express-validator": "^6.15.0",
"kysely": "^0.23.4",
"pg": "^8.9.0",
"ts-node": "^10.9.1"
@@ -4610,6 +4611,18 @@
"node": ">= 0.10.0"
}
},
"node_modules/express-validator": {
"version": "6.15.0",
"resolved": "https://registry.npmjs.org/express-validator/-/express-validator-6.15.0.tgz",
"integrity": "sha512-r05VYoBL3i2pswuehoFSy+uM8NBuVaY7avp5qrYjQBDzagx2Z5A77FZqPT8/gNLF3HopWkIzaTFaC4JysWXLqg==",
"dependencies": {
"lodash": "^4.17.21",
"validator": "^13.9.0"
},
"engines": {
"node": ">= 8.0.0"
}
},
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -6284,6 +6297,11 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
"node_modules/lodash.debounce": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
@@ -7970,6 +7988,14 @@
"integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
"dev": true
},
"node_modules/validator": {
"version": "13.9.0",
"resolved": "https://registry.npmjs.org/validator/-/validator-13.9.0.tgz",
"integrity": "sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==",
"engines": {
"node": ">= 0.10"
}
},
"node_modules/vary": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+1
View File
@@ -2,6 +2,7 @@
"dependencies": {
"dotenv": "^16.0.3",
"express": "^4.18.2",
"express-validator": "^6.15.0",
"kysely": "^0.23.4",
"pg": "^8.9.0",
"ts-node": "^10.9.1"
+1 -1
View File
@@ -5,7 +5,7 @@ info:
title: OpenAPI
version: '1.0'
servers:
- url: 'https://api.server.test/v1'
- url: 'http://localhost:3000/v1'
tags:
- name: player
description: Everything about players
+20 -15
View File
@@ -1,16 +1,21 @@
import { Router } from "express";
const router = Router();
import { Router } from 'express'
const router = Router()
//timeout middleware ?
router.get("/*", (req, res, next) => {
next();
});
router.get("/client/:clientId/", (req, res, next) => {
res.send("get information about client number " + req.params.clientId);
});
router.get("/server/:serverId/", (req, res, next) => {
res.send("get information about server number " + req.params.serverId);
});
router.get("/weapon/:weaponId/", (req, res, next) => {
res.send("get information about weapon " + req.params.weaponId);
});
export default router;
router.get('/*', (req, res, next) => {
next()
})
router.get('/weapons/', (req, res, next) => {})
router.get('/maps/', (req, res, next) => {})
router.get('/players', (req, res, next) => {})
router.get('/players/:playerId', (req, res, next) => {})
router.get('/servers/', (req, res, next) => {})
router.get('/servers/:serverId/', (req, res, next) => {})
router.get('/servers/:serverId/players', (req, res, next) => {})
router.get('/servers/:serverId/players/:playerId', (req, res, next) => {})
router.get('/servers/:serverId/weapons', (req, res, next) => {})
export default router
+15 -4
View File
@@ -1,7 +1,7 @@
import { Kysely, PostgresDialect } from 'kysely'
import { Pool } from 'pg'
import migrateToLatest from './migrations'
import Database, { KillTable } from './model'
import Database from './model'
const migration = migrateToLatest()
// You'd create one of these when you start your app.
@@ -17,6 +17,15 @@ const db = new Kysely<Database>({
})
})
interface KillRecord {
server: string
attacker: number
victim: number
weapon: number
map: number
distance: number
date: Date
}
export async function CreateKillRecord({
server,
attacker,
@@ -25,10 +34,10 @@ export async function CreateKillRecord({
map,
distance,
date
}: KillTable) {
}: KillRecord) {
await db
.insertInto('kill')
.values({ server, attacker, victim, weapon, map, distance, date })
.values({ server, attacker, victim, weapon, map, distance })
.execute()
}
/*
@@ -56,7 +65,9 @@ async function demo() {
}
}
*/
export default async function ready(): Promise<Kysely<Database>> {
export async function dbReady(): Promise<Kysely<Database>> {
await migration
return db
}
export default db
+28 -28
View File
@@ -1,43 +1,43 @@
import { Generated } from "kysely";
import { ColumnType, Generated } from 'kysely'
export interface KillTable {
id: Generated<number>;
server: string;
attacker: number;
victim: number;
weapon: string;
map: string;
distance: number;
date: Date;
id: Generated<number>
server: string
attacker: number
victim: number
weapon: string
map: string
distance: number
date: ColumnType<Date, string | Date | undefined, never>
}
interface EntityTable {
id: number;
name: string;
id: number
name: string
}
interface WeaponTable {
id: string;
name: string;
description: string;
image: string;
id: string
name: string
description: string
image: string
}
interface MapTable {
id: string;
name: string;
description: string;
image: string;
id: string
name: string
description: string
image: string
}
interface ServerTable {
id: string;
name: string;
description: string;
id: string
name: string
description: string
}
interface Database {
kill: KillTable;
entity: EntityTable;
weapon: WeaponTable;
maps: MapTable;
server: ServerTable;
kill: KillTable
entity: EntityTable
weapon: WeaponTable
maps: MapTable
server: ServerTable
}
export default Database;
export default Database
+6 -5
View File
@@ -2,11 +2,10 @@ import * as dotenv from 'dotenv'
dotenv.config()
import express from 'express'
import client from './client'
import db from './db/db'
import { dbReady } from './db/db'
import server from './server'
console.log('dotenv')
console.log(db)
const app = express()
const port = 3000
@@ -15,9 +14,11 @@ app.get('/', (req, res) => {
res.send('Hello World!')
})
app.use('/register', server)
app.use('/api', client)
app.use('/v1/', server)
app.use('/v1/', client)
app.listen(port, () => {
dbReady().then((e) => {
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
})
+16 -3
View File
@@ -1,10 +1,23 @@
import { Router } from 'express'
import { CreateKillRecord } from './db/db'
import { body } from 'express-validator'
const router = Router()
//auth middleware
router.post('/*', (req, res, next) => {
next()
})
router.post('/*', (req, res, next) => {
next()
})
router.post(
'/severs/:serverId/kills',
body('server').isString(),
body('attacker').isInt(),
body('victim').isInt(),
body('weapon').isString(),
body('map').isString(),
body('distance').isInt(),
(req, res, next) => {
//CreateKillRecord({ server, attacker, victim, weapon, map, distance })
res.send(400)
}
)
export default router