Skip to content

Commit ea6869e

Browse files
committed
[general] Use global date provider for doctrine timestampable (#310)
1 parent 25360b5 commit ea6869e

File tree

5 files changed

+66
-1
lines changed

5 files changed

+66
-1
lines changed

composer.json

+2
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,10 @@
3838
"contributte/monolog": "^0.5",
3939
"cweagans/composer-patches": "^1.7",
4040
"doctrine/orm": "2.15.*",
41+
"fastybird/datetime-factory": "^0.6",
4142
"fastybird/metadata-library": "dev-main",
4243
"fastybird/simple-auth": "^0.14",
44+
"ipub/doctrine-timestampable": "^2.0",
4345
"nette/bootstrap": "^3.1",
4446
"nette/application": "^3.1",
4547
"nette/di": "^3.0",

config/common.neon

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ extensions:
2121
# contributteCacheDebug : Contributte\Cache\DI\DebugStorageExtension
2222
orisaiObjectMapper : OriNette\ObjectMapper\DI\ObjectMapperExtension
2323
fbApplicationLibrary : FastyBird\Library\Application\DI\ApplicationExtension
24+
fbDateTimeFactory : FastyBird\DateTimeFactory\DI\DateTimeFactoryExtension
2425

2526
##################################
2627
# Nette extensions configuration #

src/DI/ApplicationExtension.php

+8
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
use FastyBird\Library\Application\Router;
2222
use FastyBird\Library\Application\Subscribers;
2323
use FastyBird\Library\Application\UI;
24+
use FastyBird\Library\Application\Utilities;
2425
use Monolog;
2526
use Nette;
2627
use Nette\Bootstrap;
@@ -236,6 +237,13 @@ public function loadConfiguration(): void
236237

237238
$builder->addDefinition($this->prefix('ui.routes'), new DI\Definitions\ServiceDefinition())
238239
->setType(Router\AppRouter::class);
240+
241+
/**
242+
* Utilities
243+
*/
244+
245+
$builder->addDefinition($this->prefix('utilities.doctrineDateProvider'), new DI\Definitions\ServiceDefinition())
246+
->setType(Utilities\DateTimeProvider::class);
239247
}
240248

241249
/**

src/UI/TemplateFactory.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* @copyright https://www.fastybird.com
88
* @author Adam Kadlec <adam.kadlec@fastybird.com>
99
* @package FastyBird:ApplicationLibrary!
10-
* @subpackage Caching
10+
* @subpackage UI
1111
* @since 1.0.0
1212
*
1313
* @date 08.03.20

src/Utilities/DateTimeProvider.php

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<?php declare(strict_types = 1);
2+
3+
/**
4+
* TemplateFactory.php
5+
*
6+
* @license More in LICENSE.md
7+
* @copyright https://www.fastybird.com
8+
* @author Adam Kadlec <adam.kadlec@fastybird.com>
9+
* @package FastyBird:ApplicationLibrary!
10+
* @subpackage Utilities
11+
* @since 1.0.0
12+
*
13+
* @date 29.08.24
14+
*/
15+
16+
namespace FastyBird\Library\Application\Utilities;
17+
18+
use DateTimeInterface;
19+
use FastyBird\DateTimeFactory;
20+
use IPub\DoctrineTimestampable\Providers as DoctrineTimestampableProviders;
21+
use Nette\DI;
22+
23+
/**
24+
* Date provider for doctrine timestampable
25+
*
26+
* @package FastyBird:ApplicationLibrary!
27+
* @subpackage Subscribers
28+
*
29+
* @author Adam Kadlec <adam.kadlec@fastybird.com>
30+
*/
31+
readonly class DateTimeProvider implements DoctrineTimestampableProviders\DateProvider
32+
{
33+
34+
public function __construct(private DI\Container $container)
35+
{
36+
}
37+
38+
/**
39+
* @throws DI\MissingServiceException
40+
*/
41+
public function getDate(): DateTimeInterface
42+
{
43+
return $this->container->getByType(DateTimeFactory\Factory::class)->getNow();
44+
}
45+
46+
/**
47+
* @throws DI\MissingServiceException
48+
*/
49+
public function getTimestamp(): int
50+
{
51+
return $this->container->getByType(DateTimeFactory\Factory::class)->getNow()->getTimestamp();
52+
}
53+
54+
}

0 commit comments

Comments
 (0)