MCPcopy Create free account
hub / github.com/ding113/claude-code-hub / createMessageRequest

Function createMessageRequest

src/repository/message.ts:207–270  ·  view source on GitHub ↗
(
  data: CreateMessageRequestData
)

Source from the content-addressed store, hash-verified

205 * 创建消息请求记录
206 */
207export async function createMessageRequest(
208 data: CreateMessageRequestData
209): Promise<MessageRequest> {
210 const formattedCost = formatCostForStorage(data.cost_usd);
211 const dbData = {
212 providerId: data.provider_id,
213 userId: data.user_id,
214 key: data.key,
215 model: data.model,
216 originalModel: data.original_model, // 原始模型(重定向前,用于计费和前端显示)
217 durationMs: data.duration_ms,
218 costUsd: formattedCost ?? undefined,
219 costMultiplier: data.cost_multiplier?.toString() ?? undefined, // 供应商倍率(转为字符串)
220 groupCostMultiplier: data.group_cost_multiplier?.toString() ?? undefined, // 分组倍率(转为字符串)
221 sessionId: data.session_id, // Session ID
222 requestSequence: data.request_sequence, // Request Sequence(Session 内请求序号)
223 userAgent: data.user_agent, // User-Agent
224 clientIp: data.client_ip, // 客户端 IP(IPv4/IPv6)
225 endpoint: data.endpoint, // 请求端点(可为空)
226 messagesCount: data.messages_count, // Messages 数量
227 specialSettings: data.special_settings ?? undefined, // 特殊设置(审计/展示)
228 cacheTtlApplied: data.cache_ttl_applied,
229 cacheCreationInputTokens: data.cache_creation_input_tokens,
230 cacheCreation5mInputTokens: data.cache_creation_5m_input_tokens,
231 cacheCreation1hInputTokens: data.cache_creation_1h_input_tokens,
232 cacheReadInputTokens: data.cache_read_input_tokens,
233 };
234
235 const [result] = await db.insert(messageRequest).values(dbData).returning({
236 id: messageRequest.id,
237 providerId: messageRequest.providerId,
238 userId: messageRequest.userId,
239 key: messageRequest.key,
240 model: messageRequest.model,
241 originalModel: messageRequest.originalModel, // 原始模型(重定向前)
242 durationMs: messageRequest.durationMs,
243 costUsd: messageRequest.costUsd,
244 costMultiplier: messageRequest.costMultiplier, // 新增
245 sessionId: messageRequest.sessionId, // 新增
246 requestSequence: messageRequest.requestSequence, // Request Sequence
247 userAgent: messageRequest.userAgent, // 新增
248 clientIp: messageRequest.clientIp, // 客户端 IP
249 endpoint: messageRequest.endpoint, // 新增:返回端点
250 messagesCount: messageRequest.messagesCount, // 新增
251 cacheTtlApplied: messageRequest.cacheTtlApplied,
252 cacheCreationInputTokens: messageRequest.cacheCreationInputTokens,
253 cacheCreation5mInputTokens: messageRequest.cacheCreation5mInputTokens,
254 cacheCreation1hInputTokens: messageRequest.cacheCreation1hInputTokens,
255 cacheReadInputTokens: messageRequest.cacheReadInputTokens,
256 specialSettings: messageRequest.specialSettings,
257 createdAt: messageRequest.createdAt,
258 updatedAt: messageRequest.updatedAt,
259 deletedAt: messageRequest.deletedAt,
260 });
261
262 rememberPublicStatusRequestSeed(result.id, {
263 createdAt: result.createdAt!,
264 model: result.model,

Callers 2

ensureContextMethod · 0.90

Calls 3

formatCostForStorageFunction · 0.90
toMessageRequestFunction · 0.90

Tested by

no test coverage detected