ringfinger/backend/classes/database/Fingerprint.php

62 lines
1.3 KiB
PHP
Raw Permalink Normal View History

2020-08-17 23:46:58 +02:00
<?php
declare(strict_types=1);
final class Fingerprint extends MySqlTable implements JsonSerializable
{
2020-08-23 12:37:39 +02:00
public const FIELD_ID = 'FingerprintId';
public const FIELD_FINGERPRINT = 'Fingerprint';
public const FIELD_USER = 'UserId';
public function __construct($id = null, DatabaseInterface &$database = null)
{
parent::__construct(self::class, $id, $database);
}
public function getFingerprintId(): ?int
{
if ($this->getPrimaryKey() === null) {
return null;
}
return (int)$this->getPrimaryKey();
}
public function getFingerprint(): string
{
return $this->getField(self::FIELD_FINGERPRINT);
}
public function getUserId(): int
{
return $this->getField(self::FIELD_USER);
}
public function setFingerprint(string $fingerprint): void
{
$this->setField(self::FIELD_FINGERPRINT, $fingerprint);
}
public function setUserId(int $userId): void
{
$this->setField(self::FIELD_USER, $userId);
}
public function isSharedWith(int $userId): bool
{
return (bool)$this->database->Count(
Sharing::class,
[Sharing::FIELD_USER => $this->getUserId(), Sharing::FIELD_USER_SHARED => $userId]
);
}
2020-08-23 12:37:39 +02:00
public function jsonSerialize(): array
{
return [
'fingerprintId' => $this->getFingerprintId(),
'fingerprint' => $this->getFingerprint(),
'userId' => $this->getUserId()
];
}
2020-08-17 23:46:58 +02:00
}