支持stream的endpoint

This commit is contained in:
Pan Qiancheng 2025-04-15 10:33:55 +08:00
parent 6353485c6f
commit 7fd563a2c8
2 changed files with 3 additions and 5 deletions

View File

@ -1,9 +1,7 @@
/// <reference types="node" />
import { IncomingHttpHeaders, IncomingMessage } from "http";
import { AsyncContext } from "../store/AsyncRowStore";
import { EntityDict } from "./Entity";
import { EntityDict as BaseEntityDict } from '../base-app-domain';
import Koa from "koa";
export type EndpointItem<ED extends EntityDict & BaseEntityDict, BackCxt extends AsyncContext<ED>> = RestEndpoint<ED, BackCxt> | CustomEndpoint<ED, BackCxt>;
export interface RestEndpoint<ED extends EntityDict & BaseEntityDict, BackCxt extends AsyncContext<ED>> {
name: string;
@ -21,6 +19,6 @@ export interface CustomEndpoint<ED extends EntityDict & BaseEntityDict, BackCxt
params?: string[];
method: 'get' | 'post' | 'put' | 'delete';
type: "custom";
fn: (contextGetter: () => Promise<BackCxt>, koaCtx: Koa.ParameterizedContext) => Promise<void>;
fn: (contextGetter: () => Promise<BackCxt>, params: Record<string, string>, headers: IncomingHttpHeaders, req: IncomingMessage, body?: any) => Promise<NodeJS.ReadableStream>;
}
export type Endpoint<ED extends EntityDict & BaseEntityDict, BackCxt extends AsyncContext<ED>> = EndpointItem<ED, BackCxt> | EndpointItem<ED, BackCxt>[];

View File

@ -2,7 +2,6 @@ import { ClientRequest, IncomingHttpHeaders, IncomingMessage } from "http";
import { AsyncContext } from "../store/AsyncRowStore";
import { EntityDict } from "./Entity";
import { EntityDict as BaseEntityDict } from '../base-app-domain';
import Koa from "koa"
export type EndpointItem<ED extends EntityDict & BaseEntityDict, BackCxt extends AsyncContext<ED>> = RestEndpoint<ED, BackCxt> | CustomEndpoint<ED, BackCxt>
export interface RestEndpoint<ED extends EntityDict & BaseEntityDict, BackCxt extends AsyncContext<ED>> {
@ -23,7 +22,8 @@ export interface CustomEndpoint<ED extends EntityDict & BaseEntityDict, BackCxt
params?: string[];
method: 'get' | 'post' | 'put' | 'delete';
type: "custom";
fn: (contextGetter: () => Promise<BackCxt>, koaCtx: Koa.ParameterizedContext) => Promise<void>;
fn: (contextGetter: () => Promise<BackCxt>, params: Record<string, string>, headers: IncomingHttpHeaders,
req: IncomingMessage, body?: any) => Promise<NodeJS.ReadableStream>;
};
export type Endpoint<ED extends EntityDict & BaseEntityDict, BackCxt extends AsyncContext<ED>> = EndpointItem<ED, BackCxt> | EndpointItem<ED, BackCxt>[];