vid-queue/app/Data/DataPipes/ParseWatchFile.php

41 lines
1.1 KiB
PHP
Raw Permalink Normal View History

<?php
2023-10-08 23:01:28 -05:00
declare(strict_types=1);
namespace App\Data\DataPipes;
2023-10-08 23:01:28 -05:00
use App\Data\Enums\Type;
use App\Data\FileData;
use Illuminate\Support\Carbon;
use Illuminate\Support\Collection;
use Spatie\LaravelData\DataPipes\DataPipe;
use Spatie\LaravelData\Lazy;
use Spatie\LaravelData\Optional;
use Spatie\LaravelData\Support\DataClass;
use Spatie\LaravelData\Support\DataConfig;
use Spatie\LaravelData\Support\DataProperty;
use Illuminate\Support\Str;
class ParseWatchFile implements DataPipe
{
public function handle(mixed $payload, DataClass $class, Collection $properties): Collection
{
$properties['watched'] = Carbon::now();
2023-10-08 23:01:28 -05:00
$properties['output'] = match ($properties['type']) {
Type::Movie => sprintf(
'%s-%d.json',
Str::slug($properties['showTitle'] ?? uniqid()),
$properties['movieYear'],
),
default => sprintf(
'%s-%dx%02d.json',
Str::slug($properties['showTitle'] ?? uniqid()),
$properties['season'],
$properties['episode']
),
};
return $properties;
}
}