trashedBy) { return RecordStatus::TRASHED; } elseif ($record->publishedBy && $record->scheduledAt) { return RecordStatus::SCHEDULED_AND_PUBLISHED; } elseif ($record->publishedBy) { return RecordStatus::PUBLISHED; } elseif ($record->scheduledAt) { return RecordStatus::SCHEDULED; } return RecordStatus::DRAFT; } public static function toDb(Record $record): array { return [ "id" => $record->id, "schema_id" => $record->schemaId, "title_field_id" => $record->titleFieldId, "created_at" => $record->createdAt->toJSON(), "created_by" => $record->createdBy, "published_at" => empty($record->publishedAt) ? null : $record->publishedAt->toJSON(), "published_by" => $record->publishedBy, "scheduled_at" => empty($record->scheduledAt) ? null : $record->scheduledAt->toJSON(), "scheduled_by" => $record->scheduledBy, "trashed_at" => empty($record->trashedAt) ? null : $record->trashedAt->toJSON(), "trashed_by" => $record->trashedBy, ]; } public static function fromDb(stdClass $data): Record { return new Record( id: data_get($data, "id"), schemaId: data_get($data, "schema_id"), titleFieldId: data_get($data, "title_field_id"), createdAt: Carbon::parse(data_get($data, "created_at")), createdBy: data_get($data, "created_by"), publishedAt: empty(data_get($data, "published_at")) ? null : Carbon::parse(data_get($data, "published_at")), publishedBy: data_get($data, "published_by"), scheduledAt: empty(data_get($data, "scheduled_at")) ? null : Carbon::parse(data_get($data, "scheduled_at")), scheduledBy: data_get($data, "scheduled_by"), trashedAt: empty(data_get($data, "trashed_at")) ? null : Carbon::parse(data_get($data, "trashed_at")), trashedBy: data_get($data, "trashed_by"), ); } /** * @param Schema[] $schemas * @param stdClass $data * @return RecordPreview */ public static function recordPreviewFromDb( array $schemas, stdClass $data, ): RecordPreview { return new RecordPreview( id: data_get($data, "id"), schemaId: data_get($data, "schema_id"), schemaName: collect($schemas) ->where("id", data_get($data, "schema_id")) ->first()->name, title: data_get($data, "title"), ); } /** * @param Schema[] $schemas * @param stdClass $data * @return EdgeRecordPreview */ public static function edgeRecordPreviewFromDb( array $schemas, stdClass $data, ): EdgeRecordPreview { return new EdgeRecordPreview( edge: EdgeModule::fromDb($data), recordPreview: new RecordPreview( id: data_get($data, "record_id"), schemaId: data_get($data, "record_schema_id"), schemaName: collect($schemas) ->where("id", data_get($data, "record_schema_id")) ->first()->name, title: data_get($data, "record_title"), ), ); } }