작업중

This commit is contained in:
2023-08-06 08:03:29 +00:00
parent 2b27b8b427
commit 7352cdbf23
6 changed files with 161 additions and 32 deletions
+10 -10
View File
@@ -28,8 +28,8 @@ export type APINamespace = {
;
}
export abstract class APIExecuter<Q extends object, R extends ValidResponse, E extends InvalidResponse>{
readonly reqType: HttpMethod | HttpMethod[];
export abstract class APIExecuter<R extends ValidResponse, E extends InvalidResponse, Q extends RawArgType>{
readonly abstract reqType: HttpMethod | HttpMethod[];
protected abstract parseQuery(expressReq: Request): Promise<Q>;
protected abstract api(query: Q, expressReq: Request, expressRes: Response): Promise<R | E | typeof treatedSpecial>;
public async run(expressReq: Request, expressRes: Response): Promise<void> {
@@ -43,15 +43,15 @@ export abstract class APIExecuter<Q extends object, R extends ValidResponse, E e
}
}
export abstract class APIBodyParseExecuter<Q extends object, R extends ValidResponse, E extends InvalidResponse> extends APIExecuter<Q, R, E>{
export abstract class APIBodyParseExecuter<R extends ValidResponse, E extends InvalidResponse, Q extends RawArgType> extends APIExecuter<R, E, Q>{
protected async parseQuery(expressReq: Request): Promise<Q> {
throw new Error('Not implemented');
return expressReq.body;
}
}
export abstract class GET<Q extends object, R extends ValidResponse, E extends InvalidResponse> extends APIExecuter<Q, R, E>{
readonly reqType = 'get';
export abstract class GET<R extends ValidResponse, E extends InvalidResponse, Q extends RawArgType> extends APIExecuter<R, E, Q>{
override readonly reqType = 'get';
protected async parseQuery(expressReq: Request): Promise<Q> {
expressReq.query;
throw new Error('Not implemented');
@@ -59,22 +59,22 @@ export abstract class GET<Q extends object, R extends ValidResponse, E extends I
}
}
export abstract class POST<Q extends object, R extends ValidResponse, E extends InvalidResponse> extends APIBodyParseExecuter<Q, R, E>{
export abstract class POST<R extends ValidResponse, E extends InvalidResponse, Q extends RawArgType> extends APIBodyParseExecuter<R, E, Q>{
readonly reqType = 'post';
}
export abstract class PUT<Q extends object, R extends ValidResponse, E extends InvalidResponse> extends APIBodyParseExecuter<Q, R, E>{
export abstract class PUT<R extends ValidResponse, E extends InvalidResponse, Q extends RawArgType> extends APIBodyParseExecuter<R, E, Q>{
readonly reqType = 'put';
}
export abstract class DELETE<Q extends object, R extends ValidResponse, E extends InvalidResponse> extends APIBodyParseExecuter<Q, R, E>{
export abstract class DELETE<R extends ValidResponse, E extends InvalidResponse, Q extends RawArgType> extends APIBodyParseExecuter<R, E, Q>{
readonly reqType = 'delete';
}
export abstract class PATCH<Q extends object, R extends ValidResponse, E extends InvalidResponse> extends APIBodyParseExecuter<Q, R, E>{
export abstract class PATCH<R extends ValidResponse, E extends InvalidResponse, Q extends RawArgType> extends APIBodyParseExecuter<R, E, Q>{
readonly reqType = 'patch';
}
export abstract class HEAD<Q extends object, R extends ValidResponse, E extends InvalidResponse> extends APIBodyParseExecuter<Q, R, E>{
export abstract class HEAD<R extends ValidResponse, E extends InvalidResponse, Q extends RawArgType> extends APIBodyParseExecuter<R, E, Q>{
readonly reqType = 'head';
}