Skip to content

Commit 39b3422

Browse files
committed
Entities: rename some properties & add a trait
1 parent f387d40 commit 39b3422

18 files changed

+264
-118
lines changed

fixtures/backup.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ App\Entity\Backup:
22
backup__{1..30}:
33
context: <randomElement(['manual', 'automatic'])>
44
backupFile: <getSqlFile()>
5-
db: '@database__*'
5+
database: '@database__*'

fixtures/database.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
App\Entity\Database:
22
database__{1..10}:
33
host: localhost
4-
db_user: <userName()>
5-
db_password: <word()>
6-
db_name: <word()>
7-
max_backups: <numberBetween(5, 20)>
8-
user: '@user__*'
4+
user: <userName()>
5+
password: <word()>
6+
name: <word()>
7+
maxBackups: <numberBetween(5, 20)>
8+
owner: '@user__*'

migrations/Version20210818131025.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,9 @@ public function down(Schema $schema): void
3131
$this->addSql('DROP TABLE `database`');
3232
$this->addSql('DROP TABLE user');
3333
}
34+
35+
public function isTransactional(): bool
36+
{
37+
return false;
38+
}
3439
}

migrations/Version20210819074722.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,9 @@ public function down(Schema $schema): void
2424
{
2525
$this->addSql('ALTER TABLE user ADD roles LONGTEXT CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci` COMMENT \'(DC2Type:json)\', DROP role');
2626
}
27+
28+
public function isTransactional(): bool
29+
{
30+
return false;
31+
}
2732
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace DoctrineMigrations;
6+
7+
use Doctrine\DBAL\Schema\Schema;
8+
use Doctrine\Migrations\AbstractMigration;
9+
10+
final class Version20210820134234 extends AbstractMigration
11+
{
12+
public function getDescription(): string
13+
{
14+
return 'Rename some fields';
15+
}
16+
17+
public function up(Schema $schema): void
18+
{
19+
$this->addSql('ALTER TABLE backup DROP FOREIGN KEY FK_3FF0D1ACA2BF053A');
20+
$this->addSql('DROP INDEX IDX_3FF0D1ACA2BF053A ON backup');
21+
$this->addSql('ALTER TABLE backup CHANGE db_id database_id INT NOT NULL');
22+
$this->addSql('ALTER TABLE backup ADD CONSTRAINT FK_3FF0D1ACF0AA09DB FOREIGN KEY (database_id) REFERENCES `database` (id)');
23+
$this->addSql('CREATE INDEX IDX_3FF0D1ACF0AA09DB ON backup (database_id)');
24+
$this->addSql('ALTER TABLE `database` DROP FOREIGN KEY FK_C953062EA76ED395');
25+
$this->addSql('DROP INDEX IDX_C953062EA76ED395 ON `database`');
26+
$this->addSql('ALTER TABLE `database` CHANGE db_user user VARCHAR(255) NOT NULL, CHANGE db_password password VARCHAR(255) NOT NULL, CHANGE db_name name VARCHAR(255) NOT NULL, CHANGE user_id owner_id INT NOT NULL');
27+
$this->addSql('ALTER TABLE `database` ADD CONSTRAINT FK_C953062E7E3C61F9 FOREIGN KEY (owner_id) REFERENCES user (id)');
28+
$this->addSql('CREATE INDEX IDX_C953062E7E3C61F9 ON `database` (owner_id)');
29+
}
30+
31+
public function down(Schema $schema): void
32+
{
33+
$this->addSql('ALTER TABLE backup DROP FOREIGN KEY FK_3FF0D1ACF0AA09DB');
34+
$this->addSql('DROP INDEX IDX_3FF0D1ACF0AA09DB ON backup');
35+
$this->addSql('ALTER TABLE backup CHANGE database_id db_id INT NOT NULL');
36+
$this->addSql('ALTER TABLE backup ADD CONSTRAINT FK_3FF0D1ACA2BF053A FOREIGN KEY (db_id) REFERENCES `database` (id)');
37+
$this->addSql('CREATE INDEX IDX_3FF0D1ACA2BF053A ON backup (db_id)');
38+
$this->addSql('ALTER TABLE `database` DROP FOREIGN KEY FK_C953062E7E3C61F9');
39+
$this->addSql('DROP INDEX IDX_C953062E7E3C61F9 ON `database`');
40+
$this->addSql('ALTER TABLE `database` ADD db_user VARCHAR(255) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`, ADD db_password VARCHAR(255) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`, ADD db_name VARCHAR(255) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_unicode_ci`, DROP user, DROP password, DROP name, CHANGE owner_id user_id INT NOT NULL');
41+
$this->addSql('ALTER TABLE `database` ADD CONSTRAINT FK_C953062EA76ED395 FOREIGN KEY (user_id) REFERENCES user (id)');
42+
$this->addSql('CREATE INDEX IDX_C953062EA76ED395 ON `database` (user_id)');
43+
}
44+
45+
public function isTransactional(): bool
46+
{
47+
return false;
48+
}
49+
}

src/Controller/Admin/BackupCrudController.php

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use App\Entity\Backup;
88
use App\Entity\User;
9+
use App\Security\Voter\BackupVoter;
910
use App\Service\BackupService;
1011
use App\Service\S3Helper;
1112
use Doctrine\ORM\QueryBuilder;
@@ -50,7 +51,7 @@ public static function getEntityFqcn(): string
5051
public function configureFilters(Filters $filters): Filters
5152
{
5253
return $filters
53-
->add(EntityFilter::new('db', 'backup.field.database'))
54+
->add(EntityFilter::new('database', 'backup.field.database'))
5455
->add(DateTimeFilter::new('createdAt', 'backup.field.created_at'))
5556
->add(ChoiceFilter::new('context', 'backup.field.context')->setChoices(
5657
[
@@ -64,9 +65,9 @@ public function configureFilters(Filters $filters): Filters
6465
public function createIndexQueryBuilder(SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters): QueryBuilder
6566
{
6667
return $this->get(EntityRepository::class)->createQueryBuilder($searchDto, $entityDto, $fields, $filters)
67-
->join('entity.db', 'db')
68-
->join('db.user', 'u')
69-
->andWhere('u.id = :user')
68+
->join('entity.database', 'database')
69+
->join('database.owner', 'owner')
70+
->andWhere('owner.id = :user')
7071
->setParameter('user', $this->getUser()->getId())
7172
->orderBy('entity.createdAt', 'DESC');
7273
}
@@ -90,7 +91,7 @@ public function configureActions(Actions $actions): Actions
9091

9192
return $actions
9293
->add(Crud::PAGE_INDEX, $downloadBackupAction)
93-
->setPermission('downloadBackup', 'can_show_backup')
94+
->setPermission('downloadBackup', BackupVoter::CAN_SHOW_BACKUP)
9495
->remove(Crud::PAGE_INDEX, Action::NEW)
9596
->remove(Crud::PAGE_INDEX, Action::EDIT)
9697
;
@@ -109,7 +110,7 @@ public function configureFields(string $pageName): iterable
109110
{
110111
yield DateTimeField::new('createdAt', 'backup.field.created_at')
111112
->setFormat('dd-MM-Y HH:mm');
112-
yield TextField::new('db.db_name', 'backup.field.database');
113+
yield TextField::new('database.name', 'backup.field.database');
113114
yield TextField::new('context', 'backup.field.context')->formatValue(function (string $context): string {
114115
return $this->get(TranslatorInterface::class)->trans('backup.choices.context.' . $context);
115116
});

src/Controller/Admin/DatabaseCrudController.php

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use App\Entity\Backup;
88
use App\Entity\Database;
99
use App\Entity\User;
10+
use App\Security\Voter\DatabaseVoter;
1011
use App\Service\BackupService;
1112
use Doctrine\ORM\QueryBuilder;
1213
use EasyCorp\Bundle\EasyAdminBundle\Collection\FieldCollection;
@@ -50,20 +51,20 @@ public static function getEntityFqcn(): string
5051
public function configureFilters(Filters $filters): Filters
5152
{
5253
return $filters
53-
->add(TextFilter::new('db_name', 'database.field.name'))
54+
->add(TextFilter::new('name', 'database.field.name'))
5455
->add(TextFilter::new('host', 'database.field.host'))
5556
->add(NumericFilter::new('port', 'database.field.port'))
56-
->add(TextFilter::new('db_user', 'database.field.user'))
57-
->add(NumericFilter::new('max_backups', 'database.field.max_backups'))
57+
->add(TextFilter::new('user', 'database.field.user'))
58+
->add(NumericFilter::new('maxBackups', 'database.field.max_backups'))
5859
->add(DateTimeFilter::new('createdAt', 'database.field.created_at'))
5960
;
6061
}
6162

6263
public function createIndexQueryBuilder(SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters): QueryBuilder
6364
{
6465
return $this->get(EntityRepository::class)->createQueryBuilder($searchDto, $entityDto, $fields, $filters)
65-
->join('entity.user', 'u')
66-
->andWhere('u.id = :user')
66+
->join('entity.owner', 'owner')
67+
->andWhere('owner.id = :user')
6768
->setParameter('user', $this->getUser()->getId())
6869
->orderBy('entity.createdAt', 'DESC');
6970
}
@@ -93,7 +94,7 @@ public function showDatabaseBackupsAction(AdminContext $context): Response
9394
->setAction(Action::INDEX)
9495
->setEntityId(null)
9596
->set('filters', [
96-
'db' => [
97+
'database' => [
9798
'comparison' => '=',
9899
'value' => (string) $database->getId(),
99100
],
@@ -114,8 +115,8 @@ public function configureActions(Actions $actions): Actions
114115
return $actions
115116
->add(Crud::PAGE_INDEX, $launchBackupAction)
116117
->add(Crud::PAGE_INDEX, $showDatabaseBackupsAction)
117-
->setPermission('launchBackup', 'can_show_database')
118-
->setPermission('showDatabaseBackups', 'can_show_database')
118+
->setPermission('launchBackup', DatabaseVoter::CAN_SHOW_DATABASE)
119+
->setPermission('showDatabaseBackups', DatabaseVoter::CAN_SHOW_DATABASE)
119120
->remove(Crud::PAGE_NEW, Action::SAVE_AND_ADD_ANOTHER)
120121
->update(Crud::PAGE_INDEX, Action::NEW, function (Action $action) {
121122
return $action->setLabel('database.action.new');
@@ -139,15 +140,15 @@ public function configureCrud(Crud $crud): Crud
139140

140141
public function configureFields(string $pageName): iterable
141142
{
142-
yield TextField::new('db_name', 'database.field.name');
143+
yield TextField::new('name', 'database.field.name');
143144
yield TextField::new('host', 'database.field.host');
144145
yield NumberField::new('port', 'database.field.port');
145-
yield TextField::new('db_user', 'database.field.user');
146-
yield TextField::new('db_plain_password', 'database.field.password')
146+
yield TextField::new('user', 'database.field.user');
147+
yield TextField::new('plainPassword', 'database.field.password')
147148
->setHelp('database.help.password')
148149
->onlyOnForms()
149150
->setRequired(true);
150-
yield NumberField::new('max_backups', 'database.field.max_backups');
151+
yield NumberField::new('maxBackups', 'database.field.max_backups');
151152

152153
yield CollectionField::new('backups', 'database.field.backups')
153154
->hideOnForm();

src/Entity/Backup.php

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace App\Entity;
66

7+
use App\Entity\Traits\PrimaryKeyTrait;
78
use App\Repository\BackupRepository;
89
use DateTimeImmutable;
910
use Doctrine\ORM\Mapping as ORM;
@@ -16,12 +17,11 @@
1617
#[ORM\Entity(repositoryClass: BackupRepository::class)]
1718
class Backup implements \Stringable
1819
{
20+
use PrimaryKeyTrait;
21+
1922
public const CONTEXT_MANUAL = 'manual';
2023
public const CONTEXT_AUTOMATIC = 'automatic';
2124

22-
#[ORM\Id, ORM\GeneratedValue, ORM\Column(type: 'integer')]
23-
private ?int $id = null;
24-
2525
#[ORM\Column(type: 'string', length: 255, nullable: true)]
2626
private ?string $backupFileName = null;
2727

@@ -56,7 +56,7 @@ class Backup implements \Stringable
5656

5757
#[ORM\ManyToOne(targetEntity: Database::class, inversedBy: 'backups')]
5858
#[ORM\JoinColumn(nullable: false)]
59-
private Database $db;
59+
private Database $database;
6060

6161
public function __construct()
6262
{
@@ -65,12 +65,7 @@ public function __construct()
6565

6666
public function __toString(): string
6767
{
68-
return (string) $this->db->getDbName() . ' - ' . $this->createdAt->format('d/m/Y H:i:s');
69-
}
70-
71-
public function getId(): ?int
72-
{
73-
return $this->id;
68+
return (string) $this->database->getName() . ' - ' . $this->createdAt->format('d/m/Y H:i:s');
7469
}
7570

7671
public function getBackupFileName(): ?string
@@ -193,14 +188,14 @@ public function setOriginalName(?string $originalName): self
193188
return $this;
194189
}
195190

196-
public function getDb(): ?Database
191+
public function getDatabase(): ?Database
197192
{
198-
return $this->db;
193+
return $this->database;
199194
}
200195

201-
public function setDb(?Database $db): self
196+
public function setDatabase(?Database $database): self
202197
{
203-
$this->db = $db;
198+
$this->database = $database;
204199

205200
return $this;
206201
}

0 commit comments

Comments
 (0)