working on openapi
This commit is contained in:
Vendored
-1
@@ -3,7 +3,6 @@
|
|||||||
"source.fixAll": true
|
"source.fixAll": true
|
||||||
},
|
},
|
||||||
"editor.formatOnSave": true,
|
"editor.formatOnSave": true,
|
||||||
"prettier.jsxSingleQuote": false,
|
|
||||||
"typescript.preferences.quoteStyle": "single",
|
"typescript.preferences.quoteStyle": "single",
|
||||||
"javascript.preferences.quoteStyle": "single",
|
"javascript.preferences.quoteStyle": "single",
|
||||||
"prettier.singleQuote": true,
|
"prettier.singleQuote": true,
|
||||||
|
|||||||
Generated
+26
@@ -7,6 +7,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"dotenv": "^16.0.3",
|
"dotenv": "^16.0.3",
|
||||||
"express": "^4.18.2",
|
"express": "^4.18.2",
|
||||||
|
"express-validator": "^6.15.0",
|
||||||
"kysely": "^0.23.4",
|
"kysely": "^0.23.4",
|
||||||
"pg": "^8.9.0",
|
"pg": "^8.9.0",
|
||||||
"ts-node": "^10.9.1"
|
"ts-node": "^10.9.1"
|
||||||
@@ -4610,6 +4611,18 @@
|
|||||||
"node": ">= 0.10.0"
|
"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": {
|
"node_modules/fast-deep-equal": {
|
||||||
"version": "3.1.3",
|
"version": "3.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
"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"
|
"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": {
|
"node_modules/lodash.debounce": {
|
||||||
"version": "4.0.8",
|
"version": "4.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
|
||||||
@@ -7970,6 +7988,14 @@
|
|||||||
"integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
|
"integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
|
||||||
"dev": true
|
"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": {
|
"node_modules/vary": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"dotenv": "^16.0.3",
|
"dotenv": "^16.0.3",
|
||||||
"express": "^4.18.2",
|
"express": "^4.18.2",
|
||||||
|
"express-validator": "^6.15.0",
|
||||||
"kysely": "^0.23.4",
|
"kysely": "^0.23.4",
|
||||||
"pg": "^8.9.0",
|
"pg": "^8.9.0",
|
||||||
"ts-node": "^10.9.1"
|
"ts-node": "^10.9.1"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ info:
|
|||||||
title: OpenAPI
|
title: OpenAPI
|
||||||
version: '1.0'
|
version: '1.0'
|
||||||
servers:
|
servers:
|
||||||
- url: 'https://api.server.test/v1'
|
- url: 'http://localhost:3000/v1'
|
||||||
tags:
|
tags:
|
||||||
- name: player
|
- name: player
|
||||||
description: Everything about players
|
description: Everything about players
|
||||||
|
|||||||
+20
-15
@@ -1,16 +1,21 @@
|
|||||||
import { Router } from "express";
|
import { Router } from 'express'
|
||||||
const router = Router();
|
const router = Router()
|
||||||
//timeout middleware ?
|
//timeout middleware ?
|
||||||
router.get("/*", (req, res, next) => {
|
router.get('/*', (req, res, next) => {
|
||||||
next();
|
next()
|
||||||
});
|
})
|
||||||
router.get("/client/:clientId/", (req, res, next) => {
|
|
||||||
res.send("get information about client number " + req.params.clientId);
|
router.get('/weapons/', (req, res, next) => {})
|
||||||
});
|
|
||||||
router.get("/server/:serverId/", (req, res, next) => {
|
router.get('/maps/', (req, res, next) => {})
|
||||||
res.send("get information about server number " + req.params.serverId);
|
|
||||||
});
|
router.get('/players', (req, res, next) => {})
|
||||||
router.get("/weapon/:weaponId/", (req, res, next) => {
|
router.get('/players/:playerId', (req, res, next) => {})
|
||||||
res.send("get information about weapon " + req.params.weaponId);
|
|
||||||
});
|
router.get('/servers/', (req, res, next) => {})
|
||||||
export default router;
|
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 { Kysely, PostgresDialect } from 'kysely'
|
||||||
import { Pool } from 'pg'
|
import { Pool } from 'pg'
|
||||||
import migrateToLatest from './migrations'
|
import migrateToLatest from './migrations'
|
||||||
import Database, { KillTable } from './model'
|
import Database from './model'
|
||||||
|
|
||||||
const migration = migrateToLatest()
|
const migration = migrateToLatest()
|
||||||
// You'd create one of these when you start your app.
|
// 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({
|
export async function CreateKillRecord({
|
||||||
server,
|
server,
|
||||||
attacker,
|
attacker,
|
||||||
@@ -25,10 +34,10 @@ export async function CreateKillRecord({
|
|||||||
map,
|
map,
|
||||||
distance,
|
distance,
|
||||||
date
|
date
|
||||||
}: KillTable) {
|
}: KillRecord) {
|
||||||
await db
|
await db
|
||||||
.insertInto('kill')
|
.insertInto('kill')
|
||||||
.values({ server, attacker, victim, weapon, map, distance, date })
|
.values({ server, attacker, victim, weapon, map, distance })
|
||||||
.execute()
|
.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
|
await migration
|
||||||
return db
|
return db
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export default db
|
||||||
|
|||||||
+28
-28
@@ -1,43 +1,43 @@
|
|||||||
import { Generated } from "kysely";
|
import { ColumnType, Generated } from 'kysely'
|
||||||
|
|
||||||
export interface KillTable {
|
export interface KillTable {
|
||||||
id: Generated<number>;
|
id: Generated<number>
|
||||||
server: string;
|
server: string
|
||||||
attacker: number;
|
attacker: number
|
||||||
victim: number;
|
victim: number
|
||||||
weapon: string;
|
weapon: string
|
||||||
map: string;
|
map: string
|
||||||
distance: number;
|
distance: number
|
||||||
date: Date;
|
date: ColumnType<Date, string | Date | undefined, never>
|
||||||
}
|
}
|
||||||
|
|
||||||
interface EntityTable {
|
interface EntityTable {
|
||||||
id: number;
|
id: number
|
||||||
name: string;
|
name: string
|
||||||
}
|
}
|
||||||
interface WeaponTable {
|
interface WeaponTable {
|
||||||
id: string;
|
id: string
|
||||||
name: string;
|
name: string
|
||||||
description: string;
|
description: string
|
||||||
image: string;
|
image: string
|
||||||
}
|
}
|
||||||
interface MapTable {
|
interface MapTable {
|
||||||
id: string;
|
id: string
|
||||||
name: string;
|
name: string
|
||||||
description: string;
|
description: string
|
||||||
image: string;
|
image: string
|
||||||
}
|
}
|
||||||
interface ServerTable {
|
interface ServerTable {
|
||||||
id: string;
|
id: string
|
||||||
name: string;
|
name: string
|
||||||
description: string;
|
description: string
|
||||||
}
|
}
|
||||||
interface Database {
|
interface Database {
|
||||||
kill: KillTable;
|
kill: KillTable
|
||||||
entity: EntityTable;
|
entity: EntityTable
|
||||||
weapon: WeaponTable;
|
weapon: WeaponTable
|
||||||
maps: MapTable;
|
maps: MapTable
|
||||||
server: ServerTable;
|
server: ServerTable
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Database;
|
export default Database
|
||||||
|
|||||||
+7
-6
@@ -2,11 +2,10 @@ import * as dotenv from 'dotenv'
|
|||||||
dotenv.config()
|
dotenv.config()
|
||||||
import express from 'express'
|
import express from 'express'
|
||||||
import client from './client'
|
import client from './client'
|
||||||
import db from './db/db'
|
import { dbReady } from './db/db'
|
||||||
import server from './server'
|
import server from './server'
|
||||||
|
|
||||||
console.log('dotenv')
|
console.log('dotenv')
|
||||||
console.log(db)
|
|
||||||
|
|
||||||
const app = express()
|
const app = express()
|
||||||
const port = 3000
|
const port = 3000
|
||||||
@@ -15,9 +14,11 @@ app.get('/', (req, res) => {
|
|||||||
res.send('Hello World!')
|
res.send('Hello World!')
|
||||||
})
|
})
|
||||||
|
|
||||||
app.use('/register', server)
|
app.use('/v1/', server)
|
||||||
app.use('/api', client)
|
app.use('/v1/', client)
|
||||||
|
|
||||||
app.listen(port, () => {
|
dbReady().then((e) => {
|
||||||
console.log(`Example app listening on port ${port}`)
|
app.listen(port, () => {
|
||||||
|
console.log(`Example app listening on port ${port}`)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
+16
-3
@@ -1,10 +1,23 @@
|
|||||||
import { Router } from 'express'
|
import { Router } from 'express'
|
||||||
|
import { CreateKillRecord } from './db/db'
|
||||||
|
import { body } from 'express-validator'
|
||||||
const router = Router()
|
const router = Router()
|
||||||
|
|
||||||
//auth middleware
|
//auth middleware
|
||||||
router.post('/*', (req, res, next) => {
|
router.post('/*', (req, res, next) => {
|
||||||
next()
|
next()
|
||||||
})
|
})
|
||||||
router.post('/*', (req, res, next) => {
|
router.post(
|
||||||
next()
|
'/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
|
export default router
|
||||||
|
|||||||
Reference in New Issue
Block a user