/**
 * Facebook ID 登录请求 DTO
 */
import {
  FbIdLoginRequestSchema,
  type FbIdLoginRequestInput,
  type FbIdLoginRequestData,
} from "@/data/schemas/auth/fb_id_login_request";

export class FbIdLoginRequest {
  declare readonly fbId: string;
  declare readonly avatarUrl: string;
  declare readonly isTestAccount: boolean;

  private constructor(input: FbIdLoginRequestInput) {
    const data = FbIdLoginRequestSchema.parse(input);
    Object.assign(this, data);
    Object.freeze(this);
  }

  static from(input: FbIdLoginRequestInput): FbIdLoginRequest {
    return new FbIdLoginRequest(input);
  }

  static fromJson(json: unknown): FbIdLoginRequest {
    return FbIdLoginRequest.from(json as FbIdLoginRequestInput);
  }

  toJson(): FbIdLoginRequestData {
    return FbIdLoginRequestSchema.parse(this);
  }
}
