Skip to content

Commit ce96f46

Browse files
committed
chubbyphp-mongo-pet-module-directory
1 parent 2e9452c commit ce96f46

File tree

120 files changed

+844
-523
lines changed

Some content is hidden

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

120 files changed

+844
-523
lines changed

.php-cs-fixer.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
$finder = PhpCsFixer\Finder::create()
66
->files()
77
->name('*.php')
8+
->in(__DIR__ . '/config')
89
->in(__DIR__ . '/src')
910
->in(__DIR__ . '/tests')
1011
;

README.md

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -96,58 +96,64 @@ composer setup:dev
9696

9797
Collections are sortable, filterable paginated lists of models.
9898

99-
* [App\Collection][60]
99+
* [App\Core\Collection][60]
100+
* [App\Pet\Collection][61]
100101

101102
### Dto
102103

103104
A DTO, or Data Transfer Object, is a simple object used to transport data between software application components.
104105

105-
* [App\Dto][70]
106+
* [App\Core\Dto][70]
107+
* [App\Pet\Dto][71]
106108

107109
### Middleware
108110

109111
Middleware functions can execute code, make changes to the request and response objects.
110112
Middleware can generally be added globally or on a per-route basis.
111113

112-
* [App\Middleware][80]
114+
* [App\Core\Middleware][80]
113115

114116
### Model
115117

116118
Models, entities, documents what ever fits your purpose the best.
117119

118-
* [App\Model][90]
120+
* [App\Core\Model][90]
121+
* [App\Pet\Model][91]
119122

120123
### ODM
121124

122125
ODM Mapping definitions.
123126

124-
* [App\ODM][100]
127+
* [App\Pet\Odm][100]
125128

126129
### Parsing
127130

128131
Parses and validates data against predefined schemas, ensuring that incoming data conforms to expected structures and criteria.
129132

130-
* [App\Parsing][110]
133+
* [App\Core\Parsing][110]
134+
* [App\Pet\Parsing][111]
131135

132136
### Repository
133137

134138
Repositories get data from storages like databases, elasticsearch, redis or whereever your models are stored or cached.
135139

136-
* [App\Repository][120]
140+
* [App\Core\Repository][120]
141+
* [App\Pet\Repository][121]
137142

138143
### RequestHandler
139144

140145
RequestHandler alias Controller, or Controller actions to be more precise.
141146
There is a directory with generic crud controllers. If you like the idea adapt them for your generic use case, if not drop them.
142147
I highly recommend to not extend them.
143148

144-
* [App\RequestHandler][130]
149+
* [App\Core\RequestHandler][130]
145150

146151
### ServiceFactory
147152

148153
Service factories are the glue code of the dependeny injection container.
149154

150-
* [App\ServiceFactory][140]
155+
* [App\Core\ServiceFactory][140]
156+
* [App\Pet\ServiceFactory][141]
151157

152158
## Opensearch
153159

@@ -214,22 +220,26 @@ curl -XPUT 'https://admin:98T722Eqw99oqFCSJCnB@localhost:9200/_plugins/_ism/poli
214220
[16]: https://packagist.org/packages/slim/psr7
215221
[17]: https://packagist.org/packages/symfony/console
216222

217-
[40]: https://packagist.org/packages/chubbyphp/petstore
223+
[60]: src/Core/Collection
224+
[61]: src/Pet/Collection
218225

219-
[60]: src/Collection
226+
[70]: src/Core/Dto
227+
[71]: src/Pet/Dto
220228

221-
[70]: src/Dto
229+
[80]: src/Core/Middleware
222230

223-
[80]: src/Middleware
231+
[90]: src/Core/Model
232+
[91]: src/Pet/Model
224233

225-
[90]: src/Model
234+
[100]: src/Pet/Odm
226235

227-
[100]: src/Odm
236+
[110]: src/Core/Parsing
237+
[111]: src/Pet/Parsing
228238

229-
[110]: src/Parsing
239+
[120]: src/Core/Repository
240+
[121]: src/Pet/Repository
230241

231-
[120]: src/Repository
242+
[130]: src/Core/RequestHandler
232243

233-
[130]: src/RequestHandler
234-
235-
[140]: src/ServiceFactory
244+
[140]: src/Core/ServiceFactory
245+
[141]: src/Pet/ServiceFactory

config/prod.php

Lines changed: 69 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -2,45 +2,48 @@
22

33
declare(strict_types=1);
44

5-
use App\Middleware\ApiExceptionMiddleware;
6-
use App\Model\Pet;
7-
use App\Model\Vaccination;
8-
use App\Odm\PetMapping;
9-
use App\Odm\VaccinationMapping;
10-
use App\Parsing\PetParsing;
11-
use App\Repository\PetRepository;
12-
use App\RequestHandler\Api\Crud\CreateRequestHandler;
13-
use App\RequestHandler\Api\Crud\DeleteRequestHandler;
14-
use App\RequestHandler\Api\Crud\ListRequestHandler;
15-
use App\RequestHandler\Api\Crud\ReadRequestHandler;
16-
use App\RequestHandler\Api\Crud\UpdateRequestHandler;
17-
use App\RequestHandler\OpenapiRequestHandler;
18-
use App\RequestHandler\PingRequestHandler;
19-
use App\ServiceFactory\Command\CommandsFactory;
20-
use App\ServiceFactory\DecodeEncode\TypeDecodersFactory;
21-
use App\ServiceFactory\DecodeEncode\TypeEncodersFactory;
22-
use App\ServiceFactory\Framework\ExceptionMiddlewareFactory;
23-
use App\ServiceFactory\Framework\MiddlewaresFactory;
24-
use App\ServiceFactory\Framework\RouteMatcherFactory;
25-
use App\ServiceFactory\Framework\RouteMatcherMiddlewareFactory;
26-
use App\ServiceFactory\Framework\RoutesByNameFactory;
27-
use App\ServiceFactory\Framework\UrlGeneratorFactory;
28-
use App\ServiceFactory\Http\ResponseFactoryFactory;
29-
use App\ServiceFactory\Http\StreamFactoryFactory;
30-
use App\ServiceFactory\Logger\LoggerFactory;
31-
use App\ServiceFactory\Middleware\ApiExceptionMiddlewareFactory;
32-
use App\ServiceFactory\Negotiation\AcceptNegotiatorSupportedMediaTypesFactory;
33-
use App\ServiceFactory\Negotiation\ContentTypeNegotiatorSupportedMediaTypesFactory;
34-
use App\ServiceFactory\Parsing\ParserFactory;
35-
use App\ServiceFactory\Parsing\PetParsingFactory;
36-
use App\ServiceFactory\Repository\PetRepositoryFactory;
37-
use App\ServiceFactory\RequestHandler\Api\Crud\PetCreateRequestHandlerFactory;
38-
use App\ServiceFactory\RequestHandler\Api\Crud\PetDeleteRequestHandlerFactory;
39-
use App\ServiceFactory\RequestHandler\Api\Crud\PetListRequestHandlerFactory;
40-
use App\ServiceFactory\RequestHandler\Api\Crud\PetReadRequestHandlerFactory;
41-
use App\ServiceFactory\RequestHandler\Api\Crud\PetUpdateRequestHandlerFactory;
42-
use App\ServiceFactory\RequestHandler\OpenapiRequestHandlerFactory;
43-
use App\ServiceFactory\RequestHandler\PingRequestHandlerFactory;
5+
use App\Core\Middleware\ApiExceptionMiddleware;
6+
use App\Core\RequestHandler\Api\Crud\CreateRequestHandler;
7+
use App\Core\RequestHandler\Api\Crud\DeleteRequestHandler;
8+
use App\Core\RequestHandler\Api\Crud\ListRequestHandler;
9+
use App\Core\RequestHandler\Api\Crud\ReadRequestHandler;
10+
use App\Core\RequestHandler\Api\Crud\UpdateRequestHandler;
11+
use App\Core\RequestHandler\OpenapiRequestHandler;
12+
use App\Core\RequestHandler\PingRequestHandler;
13+
use App\Core\ServiceFactory\Command\CommandsFactory;
14+
use App\Core\ServiceFactory\DecodeEncode\TypeDecodersFactory;
15+
use App\Core\ServiceFactory\DecodeEncode\TypeEncodersFactory;
16+
use App\Core\ServiceFactory\Framework\ExceptionMiddlewareFactory;
17+
use App\Core\ServiceFactory\Framework\MiddlewaresFactory;
18+
use App\Core\ServiceFactory\Framework\RouteMatcherFactory;
19+
use App\Core\ServiceFactory\Framework\RouteMatcherMiddlewareFactory;
20+
use App\Core\ServiceFactory\Framework\RoutesByNameFactory;
21+
use App\Core\ServiceFactory\Framework\RoutesDelegator;
22+
use App\Core\ServiceFactory\Framework\RoutesFactory;
23+
use App\Core\ServiceFactory\Framework\UrlGeneratorFactory;
24+
use App\Core\ServiceFactory\Http\ResponseFactoryFactory;
25+
use App\Core\ServiceFactory\Http\StreamFactoryFactory;
26+
use App\Core\ServiceFactory\Logger\LoggerFactory;
27+
use App\Core\ServiceFactory\Middleware\ApiExceptionMiddlewareFactory;
28+
use App\Core\ServiceFactory\Negotiation\AcceptNegotiatorSupportedMediaTypesFactory;
29+
use App\Core\ServiceFactory\Negotiation\ContentTypeNegotiatorSupportedMediaTypesFactory;
30+
use App\Core\ServiceFactory\Parsing\ParserFactory;
31+
use App\Core\ServiceFactory\RequestHandler\OpenapiRequestHandlerFactory;
32+
use App\Core\ServiceFactory\RequestHandler\PingRequestHandlerFactory;
33+
use App\Pet\Model\Pet;
34+
use App\Pet\Model\Vaccination;
35+
use App\Pet\Odm\PetMapping;
36+
use App\Pet\Odm\VaccinationMapping;
37+
use App\Pet\Parsing\PetParsing;
38+
use App\Pet\Repository\PetRepository;
39+
use App\Pet\ServiceFactory\Framework\PetRoutesDelegator;
40+
use App\Pet\ServiceFactory\Parsing\PetParsingFactory;
41+
use App\Pet\ServiceFactory\Repository\PetRepositoryFactory;
42+
use App\Pet\ServiceFactory\RequestHandler\Api\Crud\PetCreateRequestHandlerFactory;
43+
use App\Pet\ServiceFactory\RequestHandler\Api\Crud\PetDeleteRequestHandlerFactory;
44+
use App\Pet\ServiceFactory\RequestHandler\Api\Crud\PetListRequestHandlerFactory;
45+
use App\Pet\ServiceFactory\RequestHandler\Api\Crud\PetReadRequestHandlerFactory;
46+
use App\Pet\ServiceFactory\RequestHandler\Api\Crud\PetUpdateRequestHandlerFactory;
4447
use Chubbyphp\Cors\CorsMiddleware;
4548
use Chubbyphp\Cors\ServiceFactory\CorsMiddlewareFactory;
4649
use Chubbyphp\DecodeEncode\Decoder\DecoderInterface;
@@ -51,6 +54,7 @@
5154
use Chubbyphp\DecodeEncode\ServiceFactory\EncoderFactory;
5255
use Chubbyphp\Framework\Middleware\ExceptionMiddleware;
5356
use Chubbyphp\Framework\Middleware\RouteMatcherMiddleware;
57+
use Chubbyphp\Framework\Router\RouteInterface;
5458
use Chubbyphp\Framework\Router\RouteMatcherInterface;
5559
use Chubbyphp\Framework\Router\RoutesByNameInterface;
5660
use Chubbyphp\Framework\Router\UrlGeneratorInterface;
@@ -76,9 +80,9 @@
7680
use Psr\Log\LoggerInterface;
7781
use Symfony\Component\Console\Command\Command;
7882

79-
$rootDir = \realpath(__DIR__ . '/..');
80-
$cacheDir = $rootDir . '/var/cache/' . $env;
81-
$logDir = $rootDir . '/var/log';
83+
$rootDir = realpath(__DIR__.'/..');
84+
$cacheDir = $rootDir.'/var/cache/'.$env;
85+
$logDir = $rootDir.'/var/log';
8286

8387
return [
8488
'chubbyphp' => [
@@ -95,14 +99,14 @@
9599
'dependencies' => [
96100
'factories' => [
97101
AcceptMiddleware::class => AcceptMiddlewareFactory::class,
98-
AcceptNegotiatorInterface::class . 'supportedMediaTypes[]' => AcceptNegotiatorSupportedMediaTypesFactory::class,
99-
AcceptNegotiatorInterface::class . 'supportedMediaTypes[]' => AcceptNegotiatorSupportedMediaTypesFactory::class,
102+
AcceptNegotiatorInterface::class.'supportedMediaTypes[]' => AcceptNegotiatorSupportedMediaTypesFactory::class,
103+
AcceptNegotiatorInterface::class.'supportedMediaTypes[]' => AcceptNegotiatorSupportedMediaTypesFactory::class,
100104
AcceptNegotiatorInterface::class => AcceptNegotiatorFactory::class,
101105
ApiExceptionMiddleware::class => ApiExceptionMiddlewareFactory::class,
102106
CacheItemPoolInterface::class => ApcuAdapterFactory::class,
103-
Command::class . '[]' => CommandsFactory::class,
107+
Command::class.'[]' => CommandsFactory::class,
104108
ContentTypeMiddleware::class => ContentTypeMiddlewareFactory::class,
105-
ContentTypeNegotiatorInterface::class . 'supportedMediaTypes[]' => ContentTypeNegotiatorSupportedMediaTypesFactory::class,
109+
ContentTypeNegotiatorInterface::class.'supportedMediaTypes[]' => ContentTypeNegotiatorSupportedMediaTypesFactory::class,
106110
ContentTypeNegotiatorInterface::class => ContentTypeNegotiatorFactory::class,
107111
CorsMiddleware::class => CorsMiddlewareFactory::class,
108112
DecoderInterface::class => DecoderFactory::class,
@@ -111,27 +115,33 @@
111115
ExceptionMiddleware::class => ExceptionMiddlewareFactory::class,
112116
LoggerInterface::class => LoggerFactory::class,
113117
MappingDriver::class => ClassMapDriverFactory::class,
114-
MiddlewareInterface::class . '[]' => MiddlewaresFactory::class,
115-
OpenapiRequestHandler::class => OpenapiRequestHandlerFactory::class,
118+
MiddlewareInterface::class.'[]' => MiddlewaresFactory::class,
116119
OpenapiRequestHandler::class => OpenapiRequestHandlerFactory::class,
117120
ParserInterface::class => ParserFactory::class,
118-
Pet::class . CreateRequestHandler::class => PetCreateRequestHandlerFactory::class,
119-
Pet::class . DeleteRequestHandler::class => PetDeleteRequestHandlerFactory::class,
120-
Pet::class . ListRequestHandler::class => PetListRequestHandlerFactory::class,
121-
Pet::class . ReadRequestHandler::class => PetReadRequestHandlerFactory::class,
122-
Pet::class . UpdateRequestHandler::class => PetUpdateRequestHandlerFactory::class,
121+
Pet::class.CreateRequestHandler::class => PetCreateRequestHandlerFactory::class,
122+
Pet::class.DeleteRequestHandler::class => PetDeleteRequestHandlerFactory::class,
123+
Pet::class.ListRequestHandler::class => PetListRequestHandlerFactory::class,
124+
Pet::class.ReadRequestHandler::class => PetReadRequestHandlerFactory::class,
125+
Pet::class.UpdateRequestHandler::class => PetUpdateRequestHandlerFactory::class,
123126
PetParsing::class => PetParsingFactory::class,
124127
PetRepository::class => PetRepositoryFactory::class,
125128
PingRequestHandler::class => PingRequestHandlerFactory::class,
126129
ResponseFactoryInterface::class => ResponseFactoryFactory::class,
127130
RouteMatcherInterface::class => RouteMatcherFactory::class,
128131
RouteMatcherMiddleware::class => RouteMatcherMiddlewareFactory::class,
129132
RoutesByNameInterface::class => RoutesByNameFactory::class,
133+
RouteInterface::class.'[]' => RoutesFactory::class,
130134
StreamFactoryInterface::class => StreamFactoryFactory::class,
131-
TypeDecoderInterface::class . '[]' => TypeDecodersFactory::class,
132-
TypeEncoderInterface::class . '[]' => TypeEncodersFactory::class,
135+
TypeDecoderInterface::class.'[]' => TypeDecodersFactory::class,
136+
TypeEncoderInterface::class.'[]' => TypeEncodersFactory::class,
133137
UrlGeneratorInterface::class => UrlGeneratorFactory::class,
134138
],
139+
'delegators' => [
140+
RouteInterface::class.'[]' => [
141+
PetRoutesDelegator::class,
142+
RoutesDelegator::class,
143+
],
144+
],
135145
],
136146
'directories' => [
137147
'cache' => $cacheDir,
@@ -165,21 +175,21 @@
165175
'mongodbOdm' => [
166176
'configuration' => [
167177
'metadataDriverImpl' => MappingDriver::class,
168-
'proxyDir' => $cacheDir . '/doctrine/mongodbOdm/proxies',
178+
'proxyDir' => $cacheDir.'/doctrine/mongodbOdm/proxies',
169179
'proxyNamespace' => 'DoctrineMongoDBODMProxy',
170-
'hydratorDir' => $cacheDir . '/doctrine/mongodbOdm/hydrators',
180+
'hydratorDir' => $cacheDir.'/doctrine/mongodbOdm/hydrators',
171181
'hydratorNamespace' => 'DoctrineMongoDBODMHydrators',
172182
'metadataCache' => CacheItemPoolInterface::class,
173183
'defaultDB' => 'petstore',
174184
],
175185
],
176186
],
177187
'fastroute' => [
178-
'cache' => $cacheDir . '/router-cache.php',
188+
'cache' => $cacheDir.'/router-cache.php',
179189
],
180190
'monolog' => [
181191
'name' => 'petstore',
182-
'path' => $logDir . '/application.log',
192+
'path' => $logDir.'/application.log',
183193
'level' => Level::Notice,
184194
],
185195
];

src/Collection/AbstractCollection.php renamed to src/Core/Collection/AbstractCollection.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
declare(strict_types=1);
44

5-
namespace App\Collection;
5+
namespace App\Core\Collection;
66

7-
use App\Model\ModelInterface;
7+
use App\Core\Model\ModelInterface;
88

99
abstract class AbstractCollection implements CollectionInterface
1010
{

src/Collection/CollectionInterface.php renamed to src/Core/Collection/CollectionInterface.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
declare(strict_types=1);
44

5-
namespace App\Collection;
5+
namespace App\Core\Collection;
66

7-
use App\Model\ModelInterface;
7+
use App\Core\Model\ModelInterface;
88

99
interface CollectionInterface extends \JsonSerializable
1010
{

src/Dto/Collection/AbstractCollectionResponse.php renamed to src/Core/Dto/Collection/AbstractCollectionResponse.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
declare(strict_types=1);
44

5-
namespace App\Dto\Collection;
5+
namespace App\Core\Dto\Collection;
66

7-
use App\Dto\Model\ModelResponseInterface;
7+
use App\Core\Dto\Model\ModelResponseInterface;
88

99
abstract class AbstractCollectionResponse implements CollectionResponseInterface
1010
{
@@ -51,13 +51,13 @@ abstract class AbstractCollectionResponse implements CollectionResponseInterface
5151
* ...
5252
* }>,
5353
* count: int,
54+
* _type: string,
5455
* _links: array<string, array{
5556
* href: string,
5657
* templated: bool,
5758
* rel: array<string>,
5859
* attributes: array<string, string>
59-
* }>,
60-
* _type: string
60+
* }>
6161
* }
6262
*/
6363
final public function jsonSerialize(): array

src/Dto/Collection/CollectionFiltersInterface.php renamed to src/Core/Dto/Collection/CollectionFiltersInterface.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
declare(strict_types=1);
44

5-
namespace App\Dto\Collection;
5+
namespace App\Core\Dto\Collection;
66

77
interface CollectionFiltersInterface extends \JsonSerializable
88
{

src/Dto/Collection/CollectionRequestInterface.php renamed to src/Core/Dto/Collection/CollectionRequestInterface.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
declare(strict_types=1);
44

5-
namespace App\Dto\Collection;
5+
namespace App\Core\Dto\Collection;
66

7-
use App\Collection\CollectionInterface;
7+
use App\Core\Collection\CollectionInterface;
88

99
interface CollectionRequestInterface
1010
{

src/Dto/Collection/CollectionResponseInterface.php renamed to src/Core/Dto/Collection/CollectionResponseInterface.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
declare(strict_types=1);
44

5-
namespace App\Dto\Collection;
5+
namespace App\Core\Dto\Collection;
66

77
interface CollectionResponseInterface extends \JsonSerializable
88
{

0 commit comments

Comments
 (0)