39 lines
952 B
TypeScript
39 lines
952 B
TypeScript
/**
|
|
* 待同步的单条消息
|
|
* 原始 Dart: SyncMessage (lib/data/models/chat/chat_sync.dart)
|
|
*/
|
|
import { z } from "zod";
|
|
|
|
export const SyncMessageSchema = z.object({
|
|
role: z.string(),
|
|
content: z.string(),
|
|
timestamp: z.string(),
|
|
});
|
|
|
|
export type SyncMessageInput = z.input<typeof SyncMessageSchema>;
|
|
export type SyncMessageData = z.output<typeof SyncMessageSchema>;
|
|
|
|
export class SyncMessage {
|
|
declare readonly role: string;
|
|
declare readonly content: string;
|
|
declare readonly timestamp: string;
|
|
|
|
private constructor(input: SyncMessageInput) {
|
|
const data = SyncMessageSchema.parse(input);
|
|
Object.assign(this, data);
|
|
Object.freeze(this);
|
|
}
|
|
|
|
static from(input: SyncMessageInput): SyncMessage {
|
|
return new SyncMessage(input);
|
|
}
|
|
|
|
static fromJson(json: unknown): SyncMessage {
|
|
return SyncMessage.from(json as SyncMessageInput);
|
|
}
|
|
|
|
toJson(): SyncMessageData {
|
|
return SyncMessageSchema.parse(this);
|
|
}
|
|
}
|