Skip to content

Commit 3fb4a25

Browse files
romanetarsmarcet
andauthored
Feature/doctrine mapping upgrade (WIP) (#308)
* chore: move doctrine meta config from annotation to attributes engine chore: add reactor to composer chore: add reactor.php file to gitignore * chore: initial global migration from annotations to attributes Signed-off-by: romanetar <roman_ag@hotmail.com> * chore: attribute-based orm mapping unit tests (WIP) Signed-off-by: romanetar <roman_ag@hotmail.com> * chore: orm mapping tests Signed-off-by: romanetar <roman_ag@hotmail.com> * chore: include model unit tests to GHA job Signed-off-by: romanetar <roman_ag@hotmail.com> --------- Signed-off-by: romanetar <roman_ag@hotmail.com> Co-authored-by: smarcet@gmail.com <smarcet@gmail.com>
1 parent b9a6cda commit 3fb4a25

292 files changed

Lines changed: 4377 additions & 3511 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/push.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,8 @@ jobs:
110110
vendor/bin/phpunit --filter "OAuth2PresentationSubmissionTest" --log-junit results_presentation_submissions_api_test.xml
111111
echo "running OAuth2EventTypesApiTest"
112112
vendor/bin/phpunit --filter "OAuth2EventTypesApiTest" --log-junit results_event_types_api_test.xml
113+
echo "running model unit tests"
114+
vendor/bin/phpunit tests/Unit/Entities/ --log-junit results_model_unit_tests.xml
113115
- name: 'Upload Unit Test Output For OAuth2SummitApiTest'
114116
uses: actions/upload-artifact@v4
115117
with:
@@ -127,4 +129,10 @@ jobs:
127129
with:
128130
name: results_presentation_submissions_api_test
129131
path: results_presentation_submissions_api_test.xml
132+
retention-days: 5
133+
- name: 'Upload Entity Model Unit Tests Output'
134+
uses: actions/upload-artifact@v4
135+
with:
136+
name: results_model_unit_tests
137+
path: results_model_unit_tests.xml
130138
retention-days: 5

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,5 @@ phpunit.xml
3333
docker-compose/mysql/config/*.sql
3434
docker-compose/mysql/model/*.sql
3535
package.xml
36-
.env.dev
36+
.env.dev
37+
rector.php

app/Models/Foundation/Elections/Candidate.php

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,10 @@
1818
use models\utils\One2ManyPropertyTrait;
1919
use models\utils\SilverstripeBaseModel;
2020
/**
21-
* @ORM\Entity
22-
* @ORM\Table(name="Candidate")
23-
* Class Candidate
2421
* @package App\Models\Foundation\Elections
2522
*/
23+
#[ORM\Table(name: 'Candidate')]
24+
#[ORM\Entity]
2625
class Candidate extends SilverstripeBaseModel
2726
{
2827
use One2ManyPropertyTrait;
@@ -39,62 +38,61 @@ class Candidate extends SilverstripeBaseModel
3938

4039
/**
4140
* @var Election
42-
* @ORM\ManyToOne(targetEntity="App\Models\Foundation\Elections\Election", inversedBy="candidates")
43-
* @ORM\JoinColumn(name="ElectionID", referencedColumnName="ID")
4441
*/
42+
#[ORM\JoinColumn(name: 'ElectionID', referencedColumnName: 'ID')]
43+
#[ORM\ManyToOne(targetEntity: \App\Models\Foundation\Elections\Election::class, inversedBy: 'candidates')]
4544
private $election;
4645

4746
/**
4847
* @var Member
49-
* @ORM\ManyToOne(targetEntity="models\main\Member", inversedBy="candidate_profiles")
50-
* @ORM\JoinColumn(name="MemberID", referencedColumnName="ID")
5148
*/
49+
#[ORM\JoinColumn(name: 'MemberID', referencedColumnName: 'ID')]
50+
#[ORM\ManyToOne(targetEntity: \models\main\Member::class, inversedBy: 'candidate_profiles')]
5251
private $member;
5352

5453
/**
55-
* @ORM\Column(name="HasAcceptedNomination", type="boolean")
5654
* @var bool
5755
*/
56+
#[ORM\Column(name: 'HasAcceptedNomination', type: 'boolean')]
5857
private $has_accepted_nomination;
5958

6059
/**
61-
* @ORM\Column(name="IsGoldMemberCandidate", type="boolean")
6260
* @var bool
6361
*/
62+
#[ORM\Column(name: 'IsGoldMemberCandidate', type: 'boolean')]
6463
private $is_gold_member;
6564

6665
/**
6766
* Questions
6867
*/
69-
7068
/**
7169
* @var string
72-
* @ORM\Column(name="Bio", type="string")
7370
*/
71+
#[ORM\Column(name: 'Bio', type: 'string')]
7472
private $bio;
7573

7674
/**
7775
* @var string
78-
* @ORM\Column(name="RelationshipToOpenStack", type="string")
7976
*/
77+
#[ORM\Column(name: 'RelationshipToOpenStack', type: 'string')]
8078
private $relationship_to_openstack;
8179

8280
/**
8381
* @var string
84-
* @ORM\Column(name="Experience", type="string")
8582
*/
83+
#[ORM\Column(name: 'Experience', type: 'string')]
8684
private $experience;
8785

8886
/**
8987
* @var string
90-
* @ORM\Column(name="BoardsRole", type="string")
9188
*/
89+
#[ORM\Column(name: 'BoardsRole', type: 'string')]
9290
private $boards_role;
9391

9492
/**
9593
* @var string
96-
* @ORM\Column(name="TopPriority", type="string")
9794
*/
95+
#[ORM\Column(name: 'TopPriority', type: 'string')]
9896
private $top_priority;
9997

10098
/**

app/Models/Foundation/Elections/Election.php

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,10 @@
2323
use DateTimeZone;
2424

2525
/**
26-
* @ORM\Entity(repositoryClass="repositories\main\DoctrineElectionsRepository")
27-
* @ORM\Table(name="Election")
28-
* Class Election
2926
* @package App\Models\Foundation\Elections
3027
*/
28+
#[ORM\Table(name: 'Election')]
29+
#[ORM\Entity(repositoryClass: \repositories\main\DoctrineElectionsRepository::class)]
3130
class Election extends SilverstripeBaseModel
3231
{
3332
const StatusClosed = 'Closed';
@@ -50,84 +49,83 @@ class Election extends SilverstripeBaseModel
5049

5150
/**
5251
* @var string
53-
* @ORM\Column(name="Name", type="string")
5452
*/
53+
#[ORM\Column(name: 'Name', type: 'string')]
5554
private $name;
5655

5756
/**
5857
* @var \DateTime
59-
* @ORM\Column(name="NominationsOpen", type="datetime")
6058
*/
59+
#[ORM\Column(name: 'NominationsOpen', type: 'datetime')]
6160
private $nomination_opens;
6261

6362
/**
6463
* @var \DateTime
65-
* @ORM\Column(name="NominationsClose", type="datetime")
6664
*/
65+
#[ORM\Column(name: 'NominationsClose', type: 'datetime')]
6766
private $nomination_closes;
6867

6968
/**
7069
* @var \DateTime
71-
* @ORM\Column(name="NominationAppDeadline", type="datetime")
7270
*/
71+
#[ORM\Column(name: 'NominationAppDeadline', type: 'datetime')]
7372
private $nomination_deadline;
7473

7574
/**
7675
* @var \DateTime
77-
* @ORM\Column(name="ElectionsOpen", type="datetime")
7876
*/
77+
#[ORM\Column(name: 'ElectionsOpen', type: 'datetime')]
7978
private $opens;
8079

8180
/**
8281
* @var \DateTime
83-
* @ORM\Column(name="ElectionsClose", type="datetime")
8482
*/
83+
#[ORM\Column(name: 'ElectionsClose', type: 'datetime')]
8584
private $closes;
8685

8786
/**
8887
* @var string
89-
* @ORM\Column(name="TimeZoneIdentifier", type="string")
9088
*/
89+
#[ORM\Column(name: 'TimeZoneIdentifier', type: 'string')]
9190
private $timezone_id;
9291

9392
/**
9493
* Question labels
9594
*/
96-
9795
/**
9896
* @var string
99-
* @ORM\Column(name="CandidateApplicationFormRelationshipToOpenStackLabel", type="string")
10097
*/
98+
#[ORM\Column(name: 'CandidateApplicationFormRelationshipToOpenStackLabel', type: 'string')]
10199
private $candidate_application_form_relationship_to_openstack_label;
102100

103101
/**
104102
* @var string
105-
* @ORM\Column(name="CandidateApplicationFormExperienceLabel", type="string")
106103
*/
104+
#[ORM\Column(name: 'CandidateApplicationFormExperienceLabel', type: 'string')]
107105
private $candidate_application_form_experience_label;
108106

109107
/**
110108
* @var string
111-
* @ORM\Column(name="CandidateApplicationFormBoardsRoleLabel", type="string")
112109
*/
110+
#[ORM\Column(name: 'CandidateApplicationFormBoardsRoleLabel', type: 'string')]
113111
private $candidate_application_form_boards_role_label;
114112

115113
/**
116114
* @var string
117-
* @ORM\Column(name="CandidateApplicationFormTopPriorityLabel", type="string")
118115
*/
116+
#[ORM\Column(name: 'CandidateApplicationFormTopPriorityLabel', type: 'string')]
119117
private $candidate_application_form_top_priority_label;
120118

121119
/**
122-
* @ORM\OneToMany(targetEntity="App\Models\Foundation\Elections\Candidate", mappedBy="election", cascade={"persist"}, orphanRemoval=true)
123120
* @var Candidate[]
124121
*/
122+
#[ORM\OneToMany(targetEntity: \App\Models\Foundation\Elections\Candidate::class, mappedBy: 'election', cascade: ['persist'], orphanRemoval: true)]
125123
private $candidates;
126124

127125
/**
128-
* @ORM\OneToMany(targetEntity="App\Models\Foundation\Elections\Nomination", mappedBy="election", cascade={"persist"}, orphanRemoval=true)
129126
* @var Nomination[]
130127
*/
128+
#[ORM\OneToMany(targetEntity: \App\Models\Foundation\Elections\Nomination::class, mappedBy: 'election', cascade: ['persist'], orphanRemoval: true)]
131129
private $nominations;
132130

133131
/**

app/Models/Foundation/Elections/Nomination.php

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,10 @@
1717
use models\utils\SilverstripeBaseModel;
1818

1919
/**
20-
* @ORM\Entity
21-
* @ORM\Table(name="CandidateNomination")
22-
* Class Nomination
2320
* @package App\Models\Foundation\Elections
2421
*/
22+
#[ORM\Table(name: 'CandidateNomination')]
23+
#[ORM\Entity]
2524
class Nomination extends SilverstripeBaseModel
2625
{
2726
use One2ManyPropertyTrait;
@@ -40,23 +39,23 @@ class Nomination extends SilverstripeBaseModel
4039

4140
/**
4241
* @var Election
43-
* @ORM\ManyToOne(targetEntity="App\Models\Foundation\Elections\Election", inversedBy="nominations")
44-
* @ORM\JoinColumn(name="ElectionID", referencedColumnName="ID")
4542
*/
43+
#[ORM\JoinColumn(name: 'ElectionID', referencedColumnName: 'ID')]
44+
#[ORM\ManyToOne(targetEntity: \App\Models\Foundation\Elections\Election::class, inversedBy: 'nominations')]
4645
private $election;
4746

4847
/**
4948
* @var Member
50-
* @ORM\ManyToOne(targetEntity="models\main\Member", inversedBy="election_applications")
51-
* @ORM\JoinColumn(name="CandidateID", referencedColumnName="ID")
5249
*/
50+
#[ORM\JoinColumn(name: 'CandidateID', referencedColumnName: 'ID')]
51+
#[ORM\ManyToOne(targetEntity: \models\main\Member::class, inversedBy: 'election_applications')]
5352
private $candidate;
5453

5554
/**
5655
* @var Member
57-
* @ORM\ManyToOne(targetEntity="models\main\Member", inversedBy="election_nominations")
58-
* @ORM\JoinColumn(name="MemberID", referencedColumnName="ID")
5956
*/
57+
#[ORM\JoinColumn(name: 'MemberID', referencedColumnName: 'ID')]
58+
#[ORM\ManyToOne(targetEntity: \models\main\Member::class, inversedBy: 'election_nominations')]
6059
private $nominator;
6160

6261
/**

app/Models/Foundation/Main/Affiliation.php

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,49 +14,48 @@
1414
use Doctrine\ORM\Mapping as ORM;
1515
use models\utils\SilverstripeBaseModel;
1616
/**
17-
* @ORM\Entity
18-
* @ORM\Table(name="Affiliation")
19-
* Class Affiliation
2017
* @package models\main
2118
*/
19+
#[ORM\Table(name: 'Affiliation')]
20+
#[ORM\Entity]
2221
class Affiliation extends SilverstripeBaseModel
2322
{
2423
/**
25-
* @ORM\Column(name="StartDate", type="datetime")
2624
* @var \DateTime
2725
*/
26+
#[ORM\Column(name: 'StartDate', type: 'datetime')]
2827
private $start_date;
2928

3029
/**
31-
* @ORM\Column(name="EndDate", type="datetime")
3230
* @var \DateTime
3331
*/
32+
#[ORM\Column(name: 'EndDate', type: 'datetime')]
3433
private $end_date;
3534

3635
/**
37-
* @ORM\Column(name="Current", type="boolean")
3836
* @var bool
3937
*/
38+
#[ORM\Column(name: 'Current', type: 'boolean')]
4039
private $is_current;
4140

4241
/**
43-
* @ORM\Column(name="JobTitle", type="string")
4442
* @var string
4543
*/
44+
#[ORM\Column(name: 'JobTitle', type: 'string')]
4645
private $job_title;
4746

4847
/**
49-
* @ORM\ManyToOne(targetEntity="models\main\Member", inversedBy="affiliations")
50-
* @ORM\JoinColumn(name="MemberID", referencedColumnName="ID")
5148
* @var Member
5249
*/
50+
#[ORM\JoinColumn(name: 'MemberID', referencedColumnName: 'ID')]
51+
#[ORM\ManyToOne(targetEntity: \models\main\Member::class, inversedBy: 'affiliations')]
5352
private $owner;
5453

5554
/**
56-
* @ORM\ManyToOne(targetEntity="models\main\Organization")
57-
* @ORM\JoinColumn(name="OrganizationID", referencedColumnName="ID")
5855
* @var Organization
5956
*/
57+
#[ORM\JoinColumn(name: 'OrganizationID', referencedColumnName: 'ID')]
58+
#[ORM\ManyToOne(targetEntity: \models\main\Organization::class)]
6059
private $organization;
6160

6261
/**

app/Models/Foundation/Main/AssetsSyncRequest.php

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,31 +16,22 @@
1616
use DateTime;
1717

1818
/**
19-
* @ORM\Entity(repositoryClass="repositories\main\DoctrineAssetsSyncRequestRepository")
20-
* @ORM\Table(name="AssetsSyncRequest")
21-
* Class File
2219
* @package models\main
2320
*/
21+
#[ORM\Table(name: 'AssetsSyncRequest')]
22+
#[ORM\Entity(repositoryClass: \repositories\main\DoctrineAssetsSyncRequestRepository::class)]
2423
class AssetsSyncRequest extends SilverstripeBaseModel
2524
{
26-
/**
27-
* @ORM\Column(name="`Origin`", type="string")
28-
*/
25+
#[ORM\Column(name: '`Origin`', type: 'string')]
2926
private $from;
3027

31-
/**
32-
* @ORM\Column(name="`Destination`", type="string")
33-
*/
28+
#[ORM\Column(name: '`Destination`', type: 'string')]
3429
private $to;
3530

36-
/**
37-
* @ORM\Column(name="Processed", type="boolean")
38-
*/
31+
#[ORM\Column(name: 'Processed', type: 'boolean')]
3932
private $processed;
4033

41-
/**
42-
* @ORM\Column(name="ProcessedDate", type="datetime")
43-
*/
34+
#[ORM\Column(name: 'ProcessedDate', type: 'datetime')]
4435
private $processed_date;
4536

4637
/**

0 commit comments

Comments
 (0)