Introduce additional sort order for projects

This commit is contained in:
Claudio Zizza
2025-04-15 23:54:30 +02:00
parent 2498f24ec1
commit 2bb3d70e32
7 changed files with 15 additions and 4 deletions

View File

@@ -22,6 +22,7 @@ parameters:
-
repositoryName: dbal
versionsGreaterThan: "2.99.0"
sortOrder: 2
- repositoryName: doctrine1
- repositoryName: event-manager
@@ -29,11 +30,14 @@ parameters:
- repositoryName: instantiator
- repositoryName: lexer
- repositoryName: migrations
- repositoryName: mongodb-odm
-
repositoryName: mongodb-odm
sortOrder: 3
- repositoryName: orientdb-odm
-
repositoryName: orm
versionsGreaterThan: "2.9.99"
sortOrder: 1
- repositoryName: persistence
- repositoryName: phpcr-odm

View File

@@ -47,6 +47,7 @@ class Projects implements DbPrefill
$docsPath = (string) ($projectData['docsPath'] ?? '/docs');
$description = (string) ($projectData['description'] ?? '');
$keywords = $projectData['keywords'] ?? [];
$sortOrder = $projectData['sortOrder'] ?? 999;
$versions = new ArrayCollection();
foreach ($projectData['versions'] ?? [] as $version) {
@@ -110,6 +111,7 @@ class Projects implements DbPrefill
$integration,
$keywords,
$versions,
$sortOrder,
);
$this->entityManager->persist($project);

View File

@@ -59,6 +59,8 @@ class Project
private array $keywords,
#[ORM\OneToMany(targetEntity: ProjectVersion::class, fetch: 'EAGER', mappedBy: 'project', orphanRemoval: true)]
private Collection $versions,
#[ORM\Column(type: 'integer')]
public readonly int $sortOrder,
) {
foreach ($this->versions as $version) {
$version->setProject($this);

View File

@@ -44,7 +44,7 @@ class ProjectRepository extends EntityRepository
return $this->findBy([
'active' => true,
'integration' => false,
], ['name' => 'asc']);
], ['sortOrder' => 'asc', 'name' => 'asc']);
}
/** @return Project[] */
@@ -71,7 +71,7 @@ class ProjectRepository extends EntityRepository
return $this->findBy([
'active' => true,
'integration' => true,
], ['name' => 'asc']);
], ['sortOrder' => 'asc', 'name' => 'asc']);
}
/** @return Project[] */
@@ -80,6 +80,6 @@ class ProjectRepository extends EntityRepository
return $this->findBy([
'integration' => true,
'integrationFor' => $project->getSlug(),
], ['name' => 'asc']);
], ['sortOrder' => 'asc', 'name' => 'asc']);
}
}

View File

@@ -85,6 +85,7 @@ class ProjectsTest extends TestCase
self::assertSame('', $project->getIntegrationFor());
self::assertSame('It\'s a testproject', $project->getDescription());
self::assertSame(['testproject', 'docblock', 'parser'], $project->getKeywords());
self::assertSame(42, $project->sortOrder);
$this->assertProjectStats($project->getProjectStats());
$versions = $project->getVersions();

View File

@@ -8,6 +8,7 @@
"docsPath": "/docs",
"slug": "testproject",
"versionsGreaterThan": "1.0.1",
"sortOrder": 42,
"versions": [
{
"name": "2.0",

View File

@@ -47,6 +47,7 @@ abstract class TestCase extends BaseTestCase
'integration' => true,
'keywords' => [],
'versions' => new ArrayCollection(),
'sortOrder' => 999,
];
$data = array_merge($default, $data);