fengmk2
2025-02-13 02:20:02 +00:00
parent 9a17422d36
commit 0ce4cc8609
6 changed files with 48 additions and 16 deletions

View File

@@ -84,16 +84,17 @@ export function parseCookies(
* Request type
*
* @description
* - `req`: http request
* - `graphql`: graphql request
* - `http`: http request
* - `ws`: websocket request
* - `se`: server event
* - `job`: cron job
* - `rpc`: rpc request
*/
export type RequestType = 'req' | 'ws' | 'se' | 'job' | 'rpc';
export type RequestType = GqlContextType | 'se' | 'job';
export function genRequestId(type: RequestType) {
return `${AFFiNE.flavor.type}:${type}-${randomUUID()}`;
return `${AFFiNE.flavor.type}:${type}/${randomUUID()}`;
}
export function getOrGenRequestId(type: RequestType) {
@@ -101,3 +102,16 @@ export function getOrGenRequestId(type: RequestType) {
// but it can be lost in unexpected scenarios, such as unit tests, where it is automatically generated.
return ClsServiceManager.getClsService()?.getId() ?? genRequestId(type);
}
export function getRequestIdFromRequest(req: Request, type: RequestType) {
const traceContext = req.headers['x-cloud-trace-context'] as string;
const traceId = traceContext ? traceContext.split('/', 1)[0] : undefined;
if (traceId) return traceId;
return genRequestId(type);
}
export function getRequestIdFromHost(host: ArgumentsHost) {
const type = host.getType<GqlContextType>();
const req = getRequestFromHost(host);
return getRequestIdFromRequest(req, type);
}