54 lines
1.3 KiB
TypeScript
54 lines
1.3 KiB
TypeScript
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
|
|
};
|
|
}
|