Skip to content

Commit

Permalink
Centralize use from getEventsByResourceId applying DRY (secultce#628)
Browse files Browse the repository at this point in the history
  • Loading branch information
alessandrofeitoza authored Jan 28, 2025
1 parent bcaed0c commit 7b63d15
Show file tree
Hide file tree
Showing 10 changed files with 39 additions and 111 deletions.
18 changes: 14 additions & 4 deletions src/DocumentService/AbstractTimelineDocumentService.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,31 @@

namespace App\DocumentService;

use App\DocumentService\Interface\TimelineDocumentServiceInterface;
use Doctrine\ODM\MongoDB\DocumentManager;
use Doctrine\ODM\MongoDB\Repository\DocumentRepository;
use Symfony\Component\Uid\Uuid;

abstract class AbstractTimelineDocumentService
abstract class AbstractTimelineDocumentService implements TimelineDocumentServiceInterface
{
public const string CREATED = 'The resource was created';
public const string DELETED = 'The resource was deleted';
public const string UPDATED = 'The resource was updated';
protected DocumentRepository $documentRepository;

public function __construct(
private DocumentManager $documentManager,
private readonly DocumentManager $documentManager,
private readonly string $documentClass
) {
$this->documentRepository = $this->documentManager->getRepository(
$this->documentClass
);
}

public function getDocumentManager(): DocumentManager
public function getEventsByEntityId(Uuid $id): array
{
return $this->documentManager;
return $this->documentRepository->findBy([
'resourceId' => $id,
]);
}
}
16 changes: 3 additions & 13 deletions src/DocumentService/AgentTimelineDocumentService.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,12 @@

use App\Document\AgentTimeline;
use App\DocumentService\Interface\TimelineDocumentServiceInterface;
use Doctrine\ODM\MongoDB\Repository\DocumentRepository;
use Symfony\Component\Uid\Uuid;
use Doctrine\ODM\MongoDB\DocumentManager;

final class AgentTimelineDocumentService extends AbstractTimelineDocumentService implements TimelineDocumentServiceInterface
{
public function getDocumentRepository(): DocumentRepository
public function __construct(DocumentManager $documentManager)
{
return $this
->getDocumentManager()
->getRepository(AgentTimeline::class);
}

public function getEventsByEntityId(Uuid $id): array
{
return $this->getDocumentRepository()->findBy([
'resourceId' => $id,
]);
parent::__construct($documentManager, AgentTimeline::class);
}
}
16 changes: 3 additions & 13 deletions src/DocumentService/EventTimelineDocumentService.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,12 @@

use App\Document\EventTimeline;
use App\DocumentService\Interface\TimelineDocumentServiceInterface;
use Doctrine\ODM\MongoDB\Repository\DocumentRepository;
use Symfony\Component\Uid\Uuid;
use Doctrine\ODM\MongoDB\DocumentManager;

final class EventTimelineDocumentService extends AbstractTimelineDocumentService implements TimelineDocumentServiceInterface
{
public function getDocumentRepository(): DocumentRepository
public function __construct(DocumentManager $documentManager)
{
return $this
->getDocumentManager()
->getRepository(EventTimeline::class);
}

public function getEventsByEntityId(Uuid $id): array
{
return $this->getDocumentRepository()->findBy([
'resourceId' => $id,
]);
parent::__construct($documentManager, EventTimeline::class);
}
}
16 changes: 3 additions & 13 deletions src/DocumentService/InitiativeTimelineDocumentService.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,12 @@

use App\Document\InitiativeTimeline;
use App\DocumentService\Interface\TimelineDocumentServiceInterface;
use Doctrine\ODM\MongoDB\Repository\DocumentRepository;
use Symfony\Component\Uid\Uuid;
use Doctrine\ODM\MongoDB\DocumentManager;

final class InitiativeTimelineDocumentService extends AbstractTimelineDocumentService implements TimelineDocumentServiceInterface
{
public function getDocumentRepository(): DocumentRepository
public function __construct(DocumentManager $documentManager)
{
return $this
->getDocumentManager()
->getRepository(InitiativeTimeline::class);
}

public function getEventsByEntityId(Uuid $id): array
{
return $this->getDocumentRepository()->findBy([
'resourceId' => $id,
]);
parent::__construct($documentManager, InitiativeTimeline::class);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,9 @@

namespace App\DocumentService\Interface;

use Doctrine\ODM\MongoDB\Repository\DocumentRepository;
use Symfony\Component\Uid\Uuid;

interface TimelineDocumentServiceInterface
{
public function getDocumentRepository(): DocumentRepository;

public function getEventsByEntityId(Uuid $id): array;
}
16 changes: 3 additions & 13 deletions src/DocumentService/OpportunityTimelineDocumentService.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,12 @@

use App\Document\OpportunityTimeline;
use App\DocumentService\Interface\TimelineDocumentServiceInterface;
use Doctrine\ODM\MongoDB\Repository\DocumentRepository;
use Symfony\Component\Uid\Uuid;
use Doctrine\ODM\MongoDB\DocumentManager;

final class OpportunityTimelineDocumentService extends AbstractTimelineDocumentService implements TimelineDocumentServiceInterface
{
public function getDocumentRepository(): DocumentRepository
public function __construct(DocumentManager $documentManager)
{
return $this
->getDocumentManager()
->getRepository(OpportunityTimeline::class);
}

public function getEventsByEntityId(Uuid $id): array
{
return $this->getDocumentRepository()->findBy([
'resourceId' => $id,
]);
parent::__construct($documentManager, OpportunityTimeline::class);
}
}
16 changes: 3 additions & 13 deletions src/DocumentService/OrganizationTimelineDocumentService.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,12 @@

use App\Document\OrganizationTimeline;
use App\DocumentService\Interface\TimelineDocumentServiceInterface;
use Doctrine\ODM\MongoDB\Repository\DocumentRepository;
use Symfony\Component\Uid\Uuid;
use Doctrine\ODM\MongoDB\DocumentManager;

final class OrganizationTimelineDocumentService extends AbstractTimelineDocumentService implements TimelineDocumentServiceInterface
{
public function getDocumentRepository(): DocumentRepository
public function __construct(DocumentManager $documentManager)
{
return $this
->getDocumentManager()
->getRepository(OrganizationTimeline::class);
}

public function getEventsByEntityId(Uuid $id): array
{
return $this->getDocumentRepository()->findBy([
'resourceId' => $id,
]);
parent::__construct($documentManager, OrganizationTimeline::class);
}
}
16 changes: 3 additions & 13 deletions src/DocumentService/PhaseTimelineDocumentService.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,12 @@

use App\Document\PhaseTimeline;
use App\DocumentService\Interface\TimelineDocumentServiceInterface;
use Doctrine\ODM\MongoDB\Repository\DocumentRepository;
use Symfony\Component\Uid\Uuid;
use Doctrine\ODM\MongoDB\DocumentManager;

final class PhaseTimelineDocumentService extends AbstractTimelineDocumentService implements TimelineDocumentServiceInterface
{
public function getDocumentRepository(): DocumentRepository
public function __construct(DocumentManager $documentManager)
{
return $this
->getDocumentManager()
->getRepository(PhaseTimeline::class);
}

public function getEventsByEntityId(Uuid $id): array
{
return $this->getDocumentRepository()->findBy([
'resourceId' => $id,
]);
parent::__construct($documentManager, PhaseTimeline::class);
}
}
16 changes: 3 additions & 13 deletions src/DocumentService/SpaceTimelineDocumentService.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,12 @@

use App\Document\SpaceTimeline;
use App\DocumentService\Interface\TimelineDocumentServiceInterface;
use Doctrine\ODM\MongoDB\Repository\DocumentRepository;
use Symfony\Component\Uid\Uuid;
use Doctrine\ODM\MongoDB\DocumentManager;

final class SpaceTimelineDocumentService extends AbstractTimelineDocumentService implements TimelineDocumentServiceInterface
{
public function getDocumentRepository(): DocumentRepository
public function __construct(DocumentManager $documentManager)
{
return $this
->getDocumentManager()
->getRepository(SpaceTimeline::class);
}

public function getEventsByEntityId(Uuid $id): array
{
return $this->getDocumentRepository()->findBy([
'resourceId' => $id,
]);
parent::__construct($documentManager, SpaceTimeline::class);
}
}
17 changes: 4 additions & 13 deletions src/DocumentService/UserTimelineDocumentService.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,28 +7,19 @@
use App\Document\UserTimeline;
use App\DocumentService\Interface\TimelineDocumentServiceInterface;
use DateTime;
use Doctrine\ODM\MongoDB\Repository\DocumentRepository;
use Doctrine\ODM\MongoDB\DocumentManager;
use Symfony\Component\Uid\Uuid;

final class UserTimelineDocumentService extends AbstractTimelineDocumentService implements TimelineDocumentServiceInterface
{
public function getDocumentRepository(): DocumentRepository
public function __construct(DocumentManager $documentManager)
{
return $this
->getDocumentManager()
->getRepository(UserTimeline::class);
}

public function getEventsByEntityId(Uuid $id): array
{
return $this->getDocumentRepository()->findBy([
'resourceId' => $id,
]);
parent::__construct($documentManager, UserTimeline::class);
}

public function getLastLoginByUserId(Uuid $id): ?DateTime
{
$lastLogin = $this->getDocumentRepository()->findOneBy(
$lastLogin = $this->documentRepository->findOneBy(
[
'resourceId' => $id,
'action' => 'login',
Expand Down

0 comments on commit 7b63d15

Please sign in to comment.