<?php

declare(strict_types=1);

final class Sharing extends MySqlTable implements JsonSerializable
{
	public const FIELD_ID = 'SharingId';
	public const FIELD_USER = 'User';
	public const FIELD_USER_SHARED = 'UserShared';

	public function __construct($id = null, DatabaseInterface &$database = null)
	{
		parent::__construct(self::class, $id, $database);
	}

	public function getSharingId(): ?int
	{
		if ($this->getPrimaryKey() === null) {
			return null;
		}

		return (int)$this->getPrimaryKey();
	}

	public function getUserId(): int
	{
		return $this->getField(self::FIELD_USER);
	}

	public function getUserShared(): int
	{
		return $this->getField(self::FIELD_USER_SHARED);
	}

	public function setId(int $id): void
	{
		$this->setField(self::FIELD_ID, $id);
	}

	public function setUserId(int $userId): void
	{
		$this->setField(self::FIELD_USER, $userId);
	}

	public function setUserShared(int $userShared): void
	{
		$this->setField(self::FIELD_USER_SHARED, $userShared);
	}

	public function jsonSerialize()
	{
		return [
			'sharingId' => $this->getSharingId(),
			'userId' => $this->getUserId(),
			'userSharedId' => $this->getUserShared(),
		];
	}
}