working on openapi
This commit is contained in:
Vendored
-1
@@ -3,7 +3,6 @@
|
||||
"source.fixAll": true
|
||||
},
|
||||
"editor.formatOnSave": true,
|
||||
"prettier.jsxSingleQuote": false,
|
||||
"typescript.preferences.quoteStyle": "single",
|
||||
"javascript.preferences.quoteStyle": "single",
|
||||
"prettier.singleQuote": true,
|
||||
|
||||
Generated
+26
@@ -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",
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
+5
-4
@@ -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)
|
||||
|
||||
dbReady().then((e) => {
|
||||
app.listen(port, () => {
|
||||
console.log(`Example app listening on port ${port}`)
|
||||
})
|
||||
})
|
||||
|
||||
+16
-3
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user