import { ResultCode } from "./enums/result"; interface ResultDetail { data?: T; code: number; timestamp: number; executionTime?: number; } /** * @METHOD * @description 结构化返回结果 */ export interface Result { success: boolean; message: string; detail: ResultDetail; error?: { code?: number; message?: string; details?: any; retryable?: boolean; }; metadata?: { action?: string; mode?: "append" | "overwrite"; token?: string; }; } /** * @METHOD * @description 正常成功返回 */ export function ok( message: string, data?: T, metadata?: Result["metadata"], executionTime?: number, ): Result { return { success: true, message, detail: { data: data, code: ResultCode.SUCCESS, timestamp: Date.now(), ...(executionTime !== undefined && { executionTime }), }, metadata, }; } /** * @METHOD * @description 错误返回 */ export function error( message: string, errorDetails?: Result["error"], code: number = ResultCode.FORBIDDEN, executionTime?: number, ): Result { return { success: false, message, detail: { code, timestamp: Date.now(), ...(executionTime !== undefined && { executionTime }), }, error: errorDetails, }; } /** * @METHOD * @description 携 TOKEN 错误返回 */ export function errorWithToken( message: string, token: string, errorDetails?: Result["error"], code: number = ResultCode.FORBIDDEN, executionTime?: number, ): Result { return { success: false, message, detail: { code, timestamp: Date.now(), ...(executionTime !== undefined && { executionTime }), }, error: errorDetails, metadata: { token: token, }, }; } /** * @METHOD * @description 带非结构化详细错误的错误返回 */ export function errorWithDetail( message: string, errorDetails?: string, code: number = ResultCode.FORBIDDEN, executionTime?: number, ): Result { return { success: false, message, detail: { code, timestamp: Date.now(), ...(executionTime !== undefined && { executionTime }), }, error: { message, details: errorDetails, code, }, }; }