import type { AuthStateValue } from "../../shared/auth-messages"; import type { MarketRecord } from "./types"; export interface BatchPayload { authors: Array<{ authorId: string; authorName: string; }>; batchId: string; batchName: string; createdAt: string; creatorName: string; logtoUserId: string; resource: string; } export function createBatchPayload(options: { authState: AuthStateValue; batchName: string; createdAt: string; records: MarketRecord[]; }): BatchPayload { const logtoUserId = options.authState.userInfo?.sub?.trim(); if (!logtoUserId) { throw new Error("batch submit user id unavailable"); } const resource = options.authState.resource?.trim(); if (!resource) { throw new Error("batch submit resource unavailable"); } const batchName = options.batchName.trim(); if (!batchName) { throw new Error("batch submit batch name is required"); } return { authors: options.records.map((record) => ({ authorId: record.authorId, authorName: record.authorName })), batchId: `${batchName}-${options.createdAt}`, batchName, createdAt: options.createdAt, creatorName: options.authState.userInfo?.name ?? options.authState.userInfo?.username ?? logtoUserId, logtoUserId, resource }; }