misuzu/src/Storage/Files/FileInfo.php

50 lines
1.2 KiB
PHP

<?php
namespace Misuzu\Storage\Files;
use Carbon\CarbonImmutable;
use Index\UriBase64;
use Index\Db\DbResult;
class FileInfo {
public function __construct(
public private(set) string $id,
public private(set) string $hash,
public private(set) string $type,
public private(set) int $size,
public private(set) int $createdTime,
) {}
public static function fromResult(DbResult $result): FileInfo {
return new FileInfo(
id: $result->getString(0),
hash: $result->getString(1),
type: $result->getString(2),
size: $result->getInteger(3),
createdTime: $result->getInteger(4),
);
}
public string $hashString {
get => UriBase64::encode($this->hash);
}
public string $hashHexString {
get => bin2hex($this->hash);
}
public CarbonImmutable $createdAt {
get => CarbonImmutable::createFromTimestampUTC($this->createdTime);
}
public bool $isImage {
get => str_starts_with($this->type, 'image/');
}
public bool $isVideo {
get => str_starts_with($this->type, 'video/');
}
public bool $isAudio {
get => str_starts_with($this->type, 'audio/');
}
}