Parse and validate AT Protocol Lexicons with DTO generation for Laravel
at main 97 lines 3.6 kB view raw
1<?php 2 3namespace SocialDept\AtpSchema\Generated\Tools\Ozone\Moderation\Defs; 4 5use Carbon\Carbon; 6use SocialDept\AtpSchema\Data\Data; 7use SocialDept\AtpSchema\Generated\Com\Atproto\Admin\Defs\ThreatSignature; 8use SocialDept\AtpSchema\Generated\Com\Atproto\Label\Defs\Label; 9use SocialDept\AtpSchema\Generated\Com\Atproto\Server\Defs\InviteCode; 10 11/** 12 * GENERATED CODE - DO NOT EDIT 13 * 14 * Lexicon: tools.ozone.moderation.defs.repoViewDetail 15 * Type: object 16 * 17 * @property string $did 18 * @property string $handle 19 * @property string|null $email 20 * @property array $relatedRecords 21 * @property Carbon $indexedAt 22 * @property mixed $moderation 23 * @property array<Label>|null $labels 24 * @property InviteCode|null $invitedBy 25 * @property array<InviteCode>|null $invites 26 * @property bool|null $invitesDisabled 27 * @property string|null $inviteNote 28 * @property Carbon|null $emailConfirmedAt 29 * @property Carbon|null $deactivatedAt 30 * @property array<ThreatSignature>|null $threatSignatures 31 * 32 * Constraints: 33 * - Required: did, handle, relatedRecords, indexedAt, moderation 34 * - did: Format: did 35 * - handle: Format: handle 36 * - indexedAt: Format: datetime 37 * - emailConfirmedAt: Format: datetime 38 * - deactivatedAt: Format: datetime 39 */ 40class RepoViewDetail extends Data 41{ 42 public function __construct( 43 public readonly string $did, 44 public readonly string $handle, 45 public readonly array $relatedRecords, 46 public readonly Carbon $indexedAt, 47 public readonly mixed $moderation, 48 public readonly ?string $email = null, 49 public readonly ?array $labels = null, 50 public readonly ?InviteCode $invitedBy = null, 51 public readonly ?array $invites = null, 52 public readonly ?bool $invitesDisabled = null, 53 public readonly ?string $inviteNote = null, 54 public readonly ?Carbon $emailConfirmedAt = null, 55 public readonly ?Carbon $deactivatedAt = null, 56 public readonly ?array $threatSignatures = null 57 ) { 58 } 59 60 /** 61 * Get the lexicon NSID for this data type. 62 * 63 * @return string 64 */ 65 public static function getLexicon(): string 66 { 67 return 'tools.ozone.moderation.defs.repoViewDetail'; 68 } 69 70 71 /** 72 * Create an instance from an array. 73 * 74 * @param array $data The data array 75 * @return static 76 */ 77 public static function fromArray(array $data): static 78 { 79 return new static( 80 did: $data['did'], 81 handle: $data['handle'], 82 relatedRecords: $data['relatedRecords'], 83 indexedAt: Carbon::parse($data['indexedAt']), 84 moderation: $data['moderation'], 85 email: $data['email'] ?? null, 86 labels: isset($data['labels']) ? array_map(fn ($item) => Label::fromArray($item), $data['labels']) : [], 87 invitedBy: isset($data['invitedBy']) ? InviteCode::fromArray($data['invitedBy']) : null, 88 invites: isset($data['invites']) ? array_map(fn ($item) => InviteCode::fromArray($item), $data['invites']) : [], 89 invitesDisabled: $data['invitesDisabled'] ?? null, 90 inviteNote: $data['inviteNote'] ?? null, 91 emailConfirmedAt: isset($data['emailConfirmedAt']) ? Carbon::parse($data['emailConfirmedAt']) : null, 92 deactivatedAt: isset($data['deactivatedAt']) ? Carbon::parse($data['deactivatedAt']) : null, 93 threatSignatures: isset($data['threatSignatures']) ? array_map(fn ($item) => ThreatSignature::fromArray($item), $data['threatSignatures']) : [] 94 ); 95 } 96 97}