mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-28 13:06:13 +00:00
Simplify entity relationship and enforce foreign key constraints
Removed the resetStoredObject() method call from StoredObject, adjusted the storedObjectId column in the stored_object_version table to be NOT NULL, and moved the association setup of the StoredObject entity directly into the constructor in StoredObjectVersion. This ensures that every StoredObjectVersion has a valid StoredObject and maintains database integrity.
This commit is contained in:
parent
667e144681
commit
615629d1b4
@ -346,7 +346,6 @@ class StoredObject implements Document, TrackCreationInterface
|
||||
throw new \UnexpectedValueException('This stored object does not contains this version');
|
||||
}
|
||||
$this->versions->removeElement($storedObjectVersion);
|
||||
$storedObjectVersion->resetStoredObject();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -33,13 +33,6 @@ class StoredObjectVersion implements TrackCreationInterface
|
||||
#[ORM\Column(type: \Doctrine\DBAL\Types\Types::INTEGER)]
|
||||
private ?int $id = null;
|
||||
|
||||
/**
|
||||
* The stored object associated with this version.
|
||||
*/
|
||||
#[ORM\ManyToOne(targetEntity: StoredObject::class, inversedBy: 'versions')]
|
||||
#[ORM\JoinColumn(name: 'stored_object_id', nullable: true)]
|
||||
private ?StoredObject $storedObject;
|
||||
|
||||
/**
|
||||
* filename of the version in the stored object.
|
||||
*/
|
||||
@ -47,7 +40,12 @@ class StoredObjectVersion implements TrackCreationInterface
|
||||
private string $filename = '';
|
||||
|
||||
public function __construct(
|
||||
StoredObject $storedObject,
|
||||
/**
|
||||
* The stored object associated with this version.
|
||||
*/
|
||||
#[ORM\ManyToOne(targetEntity: StoredObject::class, inversedBy: 'versions')]
|
||||
#[ORM\JoinColumn(name: 'stored_object_id', nullable: false)]
|
||||
private StoredObject $storedObject,
|
||||
|
||||
/**
|
||||
* The incremental version.
|
||||
@ -78,7 +76,6 @@ class StoredObjectVersion implements TrackCreationInterface
|
||||
private string $type = '',
|
||||
?string $filename = null,
|
||||
) {
|
||||
$this->storedObject = $storedObject;
|
||||
$this->filename = $filename ?? self::generateFilename($this);
|
||||
}
|
||||
|
||||
@ -127,12 +124,4 @@ class StoredObjectVersion implements TrackCreationInterface
|
||||
{
|
||||
return $this->version;
|
||||
}
|
||||
|
||||
/**
|
||||
* @internal to be used by StoredObject::removeVersion
|
||||
*/
|
||||
public function resetStoredObject(): void
|
||||
{
|
||||
$this->storedObject = null;
|
||||
}
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ final class Version20240709102730 extends AbstractMigration
|
||||
<<<'SQL'
|
||||
CREATE TABLE chill_doc.stored_object_version (
|
||||
id INT NOT NULL,
|
||||
stored_object_id INT DEFAULT NULL,
|
||||
stored_object_id INT NOT NULL,
|
||||
version INT DEFAULT 0 NOT NULL,
|
||||
filename TEXT NOT NULL,
|
||||
iv JSON NOT NULL,
|
||||
|
Loading…
x
Reference in New Issue
Block a user