<?php

namespace App\Entity;

use App\Repository\PartitionRepository;
use Doctrine\ORM\Mapping as ORM;

#[ORM\Entity(repositoryClass: PartitionRepository::class)]
#[ORM\Table(name: '`partition`')]
class Partition extends AbstractEntity
{
    #[ORM\Column(nullable: true)]
    private ?int $diskNumber = null;

    #[ORM\Column(nullable: true)]
    private ?int $partitionNumber = null;

    #[ORM\Column(length: 255, nullable: true)]
    private ?string $partitionCode = null;

    #[ORM\Column]
    private ?int $size = null;

    #[ORM\Column(length: 255, nullable: true)]
    private ?string $cacheContent = null;

    #[ORM\Column(length: 255, nullable: true)]
    private ?string $filesystem = null;

    #[ORM\ManyToOne(inversedBy: 'partitions')]
    #[ORM\JoinColumn( onDelete: 'CASCADE')]
    private ?Client $client = null;

    #[ORM\Column]
    private ?int $memoryUsage = null;

    #[ORM\ManyToOne(inversedBy: 'partitions')]
    #[ORM\JoinColumn(nullable: true)]
    private ?OperativeSystem $operativeSystem = null;

    #[ORM\ManyToOne(inversedBy: 'partitions')]
    #[ORM\JoinColumn(nullable: true, onDelete: 'SET NULL')]
    private ?ImageImageRepository $image = null;

    public function getDiskNumber(): ?int
    {
        return $this->diskNumber;
    }

    public function setDiskNumber(?int $diskNumber): static
    {
        $this->diskNumber = $diskNumber;

        return $this;
    }

    public function getPartitionNumber(): ?int
    {
        return $this->partitionNumber;
    }

    public function setPartitionNumber(?int $partitionNumber): static
    {
        $this->partitionNumber = $partitionNumber;

        return $this;
    }

    public function getPartitionCode(): ?string
    {
        return $this->partitionCode;
    }

    public function setPartitionCode(?string $partitionCode): static
    {
        $this->partitionCode = $partitionCode;

        return $this;
    }

    public function getSize(): ?int
    {
        return $this->size;
    }

    public function setSize(int $size): static
    {
        $this->size = $size;

        return $this;
    }

    public function getCacheContent(): ?string
    {
        return $this->cacheContent;
    }

    public function setCacheContent(?string $cacheContent): static
    {
        $this->cacheContent = $cacheContent;

        return $this;
    }

    public function getFilesystem(): ?string
    {
        return $this->filesystem;
    }

    public function setFilesystem(?string $filesystem): static
    {
        $this->filesystem = $filesystem;

        return $this;
    }

    public function getClient(): ?Client
    {
        return $this->client;
    }

    public function setClient(?Client $client): static
    {
        $this->client = $client;

        return $this;
    }

    public function getMemoryUsage(): ?int
    {
        return $this->memoryUsage;
    }

    public function setMemoryUsage(int $memoryUsage): static
    {
        $this->memoryUsage = $memoryUsage;

        return $this;
    }

    public function getOperativeSystem(): ?OperativeSystem
    {
        return $this->operativeSystem;
    }

    public function setOperativeSystem(?OperativeSystem $operativeSystem): static
    {
        $this->operativeSystem = $operativeSystem;

        return $this;
    }

    public function getImage(): ?ImageImageRepository
    {
        return $this->image;
    }

    public function setImage(?ImageImageRepository $image): static
    {
        $this->image = $image;

        return $this;
    }
}
