mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-28 21:16: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');
|
throw new \UnexpectedValueException('This stored object does not contains this version');
|
||||||
}
|
}
|
||||||
$this->versions->removeElement($storedObjectVersion);
|
$this->versions->removeElement($storedObjectVersion);
|
||||||
$storedObjectVersion->resetStoredObject();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -33,13 +33,6 @@ class StoredObjectVersion implements TrackCreationInterface
|
|||||||
#[ORM\Column(type: \Doctrine\DBAL\Types\Types::INTEGER)]
|
#[ORM\Column(type: \Doctrine\DBAL\Types\Types::INTEGER)]
|
||||||
private ?int $id = null;
|
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.
|
* filename of the version in the stored object.
|
||||||
*/
|
*/
|
||||||
@ -47,7 +40,12 @@ class StoredObjectVersion implements TrackCreationInterface
|
|||||||
private string $filename = '';
|
private string $filename = '';
|
||||||
|
|
||||||
public function __construct(
|
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.
|
* The incremental version.
|
||||||
@ -78,7 +76,6 @@ class StoredObjectVersion implements TrackCreationInterface
|
|||||||
private string $type = '',
|
private string $type = '',
|
||||||
?string $filename = null,
|
?string $filename = null,
|
||||||
) {
|
) {
|
||||||
$this->storedObject = $storedObject;
|
|
||||||
$this->filename = $filename ?? self::generateFilename($this);
|
$this->filename = $filename ?? self::generateFilename($this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,12 +124,4 @@ class StoredObjectVersion implements TrackCreationInterface
|
|||||||
{
|
{
|
||||||
return $this->version;
|
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'
|
<<<'SQL'
|
||||||
CREATE TABLE chill_doc.stored_object_version (
|
CREATE TABLE chill_doc.stored_object_version (
|
||||||
id INT NOT NULL,
|
id INT NOT NULL,
|
||||||
stored_object_id INT DEFAULT NULL,
|
stored_object_id INT NOT NULL,
|
||||||
version INT DEFAULT 0 NOT NULL,
|
version INT DEFAULT 0 NOT NULL,
|
||||||
filename TEXT NOT NULL,
|
filename TEXT NOT NULL,
|
||||||
iv JSON NOT NULL,
|
iv JSON NOT NULL,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user