Files
projectsend/app/Modules/Files/Models/ZipDownload.php
T
ignacionelson 6e47d76ba6 ProjectSend 2.0.0
Client file sharing, rebuilt from the ground up: a private area per
client, resumable uploads, folders, groups and categories, sharing with
expiry dates and download limits, comments, file versions, an activity
log, a REST API, and sixteen languages.

This repository begins here. ProjectSend 2 was developed privately, and
that development history is not published — the previous generation
remains available, with its own history, at projectsend/legacy.

Free software under the GNU General Public License v2, or (at your
option) any later version.
2026-08-14 01:38:12 -03:00

56 lines
1.3 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Modules\Files\Models;
use App\Models\User;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Support\Carbon;
/**
* Tracks one queued zip-archive build (BuildZipDownloadJob). Disposable —
* see PurgeZipDownloadsCommand, which removes old rows and their files.
*
* @property int $id
* @property int $requested_by
* @property string $status
* @property string|null $path
* @property int $file_count
* @property int|null $total_size
* @property string|null $error
* @property list<int> $file_ids
* @property list<int> $folder_ids
* @property list<array{id: int, name: string}>|null $skipped_files
* @property Carbon|null $delivered_at
*/
class ZipDownload extends Model
{
public const STATUS_PENDING = 'pending';
public const STATUS_READY = 'ready';
public const STATUS_FAILED = 'failed';
protected $guarded = [];
protected function casts(): array
{
return [
'file_ids' => 'array',
'folder_ids' => 'array',
'skipped_files' => 'array',
'delivered_at' => 'datetime',
];
}
/**
* @return BelongsTo<User, $this>
*/
public function requester(): BelongsTo
{
return $this->belongsTo(User::class, 'requested_by');
}
}