From 96b18ad5ff55eeec0b14c4e862a6ade7fc3b7ac6 Mon Sep 17 00:00:00 2001 From: Hide_D Date: Tue, 8 Aug 2023 14:44:42 +0000 Subject: [PATCH] =?UTF-8?q?ProcDecorator=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/api/ProcDecorator/ParseUserLevel.ts | 17 ++++++++ server/api/ProcDecorator/ReqGameLogin.ts | 16 +++++++ server/api/ProcDecorator/ReqLogin.ts | 20 +++++++++ .../api/{decorator => ProcDecorator}/base.ts | 7 +++- server/api/decorator/ParseUserLevel.ts | 32 -------------- server/api/decorator/reqGameLogin.ts | 32 -------------- server/api/decorator/reqLogin.ts | 42 ------------------- 7 files changed, 59 insertions(+), 107 deletions(-) create mode 100644 server/api/ProcDecorator/ParseUserLevel.ts create mode 100644 server/api/ProcDecorator/ReqGameLogin.ts create mode 100644 server/api/ProcDecorator/ReqLogin.ts rename server/api/{decorator => ProcDecorator}/base.ts (92%) delete mode 100644 server/api/decorator/ParseUserLevel.ts delete mode 100644 server/api/decorator/reqGameLogin.ts delete mode 100644 server/api/decorator/reqLogin.ts diff --git a/server/api/ProcDecorator/ParseUserLevel.ts b/server/api/ProcDecorator/ParseUserLevel.ts new file mode 100644 index 0000000..d39d411 --- /dev/null +++ b/server/api/ProcDecorator/ParseUserLevel.ts @@ -0,0 +1,17 @@ +import { LoginCtx } from "./ReqLogin"; +import type { ProcDecoratorGenerator } from "./base"; +import type { Request, Response } from "express"; + + +export interface UserLevelCtx { + userLevel: number; +} + +export function ParseUserLevel(): ProcDecoratorGenerator { + return (inCtx) => { + return { + userLevel: 123, + ...inCtx, + } + } +} \ No newline at end of file diff --git a/server/api/ProcDecorator/ReqGameLogin.ts b/server/api/ProcDecorator/ReqGameLogin.ts new file mode 100644 index 0000000..3695d68 --- /dev/null +++ b/server/api/ProcDecorator/ReqGameLogin.ts @@ -0,0 +1,16 @@ +import { LoginCtx } from "./ReqLogin"; +import type { ProcDecoratorGenerator } from "./base"; +import type { Request, Response } from "express"; + +export type GameLoginCtx = { + generalID: number; +} + +export function ReqGameLogin(): ProcDecoratorGenerator { + return (inCtx) => { + return { + generalID: inCtx.userID * 4, + ...inCtx, + } + } +} \ No newline at end of file diff --git a/server/api/ProcDecorator/ReqLogin.ts b/server/api/ProcDecorator/ReqLogin.ts new file mode 100644 index 0000000..b279153 --- /dev/null +++ b/server/api/ProcDecorator/ReqLogin.ts @@ -0,0 +1,20 @@ +import type { Empty, ProcDecoratorPrePostGenerator } from "./base"; + +export type LoginCtx = { + userID: number; +} + +export function ReqLogin(): ProcDecoratorPrePostGenerator { + return [ + (inCtx) => { + return { + userID: 999, + ...inCtx, + }; + }, + (inCtx) => { + console.log('ReqLogin post'); + return inCtx; + } + ] +} \ No newline at end of file diff --git a/server/api/decorator/base.ts b/server/api/ProcDecorator/base.ts similarity index 92% rename from server/api/decorator/base.ts rename to server/api/ProcDecorator/base.ts index d98b2fc..72444bb 100644 --- a/server/api/decorator/base.ts +++ b/server/api/ProcDecorator/base.ts @@ -1,3 +1,5 @@ +import type { Request, Response } from "express"; + type MayBePromise = T | Promise; export type InvalidProc = { @@ -10,7 +12,7 @@ export interface ProcDecorator> { (inCtx: In, req: Request, res: Response): MayBePromise; } -type Empty = Record; +export type Empty = Record; type Login = { userID: number; @@ -57,6 +59,9 @@ export function ReqGameLogin(): ProcDecorator = ProcDecorator; +export type ProcDecoratorPrePostGenerator = [ProcDecorator, ProcDecorator]; + type Compose2 = D & B extends A & C ? B extends C ? ProcDecorator : never : never; type PD1 = () => ProcDecorator; diff --git a/server/api/decorator/ParseUserLevel.ts b/server/api/decorator/ParseUserLevel.ts deleted file mode 100644 index 10c6fef..0000000 --- a/server/api/decorator/ParseUserLevel.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { type BaseConverter, InvalidConversion } from "./base"; -import { Request, Response, NextFunction } from "express"; - - -interface GameLoginIn { - userID: number; - [key: string]: unknown; -} - -interface UserLevelOut { - userID: number; - userLevel: number; - [key: string]: unknown; -} - -/*export class ReqGameLogin0 extends BaseConverter { - override transform(inCtx: SessionIn, request: Request, response: Response): SessionOut | InvalidConversion { - return { - generalID: inCtx.userID * 4, - ...inCtx, - } - } -}*/ - -export function ParseUserLevel(): BaseConverter { - return (inCtx: GameLoginIn, request: Request, response: Response): UserLevelOut | InvalidConversion => { - return { - userLevel: 123, - ...inCtx, - } - } -} \ No newline at end of file diff --git a/server/api/decorator/reqGameLogin.ts b/server/api/decorator/reqGameLogin.ts deleted file mode 100644 index c1ce74a..0000000 --- a/server/api/decorator/reqGameLogin.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { type BaseConverter, InvalidConversion } from "./base"; -import { Request, Response, NextFunction } from "express"; - - -interface GameLoginIn { - userID: number; - [key: string]: unknown; -} - -interface GameLoginOut { - userID: number; - generalID: number; - [key: string]: unknown; -} - -/*export class ReqGameLogin0 extends BaseConverter { - override transform(inCtx: SessionIn, request: Request, response: Response): SessionOut | InvalidConversion { - return { - generalID: inCtx.userID * 4, - ...inCtx, - } - } -}*/ - -export function ReqGameLogin(): BaseConverter { - return (inCtx: GameLoginIn, request: Request, response: Response): GameLoginOut | InvalidConversion => { - return { - generalID: inCtx.userID * 4, - ...inCtx, - } - } -} \ No newline at end of file diff --git a/server/api/decorator/reqLogin.ts b/server/api/decorator/reqLogin.ts deleted file mode 100644 index 3c99d48..0000000 --- a/server/api/decorator/reqLogin.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { BaseConverter, InvalidConversion } from "./base"; -import { Request, Response, NextFunction } from "express"; - - -interface SessionIn { - [key: string]: unknown; -} - -interface SessionOut { - userID: number; - [key: string]: unknown; -} - -/*export class ReqLogin extends BaseConverter { - override transform(inCtx: SessionIn, request: Request, response: Response): SessionOut | InvalidConversion { - if(request.params['something'] === 'haha'){ - return { - isInvalid: true, - reason: 'haha', - } - } - return { - generalID: inCtx.userID * 4, - ...inCtx, - } - } -}*/ - -export function ReqLogin(): BaseConverter { - return (inCtx: SessionIn, request: Request, response: Response): SessionOut | InvalidConversion => { - if(request.params['something'] === 'haha'){ - return { - isInvalid: true, - reason: 'haha', - } - } - return { - userID: 123, - ...inCtx, - } - } -} \ No newline at end of file