Skip to content

Commit 42a1c61

Browse files
committed
feat: schema manager interface, schema-renderer dependency added for future console commands
1 parent 36ae3f9 commit 42a1c61

File tree

5 files changed

+80
-2
lines changed

5 files changed

+80
-2
lines changed

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"cycle/annotated": "^3.2",
2121
"cycle/migrations": "^3.0",
2222
"cycle/orm": "^2.2",
23+
"cycle/schema-renderer": "^1.1",
2324
"illuminate/contracts": "^9.20"
2425
},
2526
"require-dev": {

composer.lock

Lines changed: 41 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/cycle.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,17 @@
7979
],
8080

8181
'schema' => [
82-
// ...
82+
'cache' => [
83+
'enabled' => (bool) env('DB_SCHEMA_CACHE', true),
84+
'storage' => env('DB_SCHEMA_CACHE_DRIVER', 'file'),
85+
],
86+
'defaults' => [
87+
// ...
88+
],
89+
],
90+
91+
'migrations' => [
92+
'directory' => database_path('migrations'),
93+
'table' => env('DB_MIGRATIONS_TABLE', 'migrations'),
8394
],
8495
];

src/Bridge/Laravel/Providers/CycleServiceProvider.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@
77
use Cycle\Database\Config\DatabaseConfig;
88
use Cycle\Database\DatabaseManager;
99
use Cycle\Database\DatabaseProviderInterface;
10+
use Cycle\ORM\SchemaInterface;
1011
use Illuminate\Support\ServiceProvider;
1112
use WayOfDev\Cycle\Config;
1213
use WayOfDev\Cycle\Contracts\Config\Repository as ConfigRepository;
1314
use WayOfDev\Cycle\Contracts\EntityManager;
15+
use WayOfDev\Cycle\Contracts\SchemaManager as SchemaManagerContract;
1416
use WayOfDev\Cycle\Entity\Manager;
1517

1618
final class CycleServiceProvider extends ServiceProvider
@@ -37,6 +39,7 @@ public function register(): void
3739
$this->registerDatabaseConfig();
3840
$this->registerDatabaseManager();
3941
$this->registerEntityManager();
42+
$this->registerDatabaseSchema();
4043
}
4144

4245
private function registerConsoleCommands(): void
@@ -81,4 +84,13 @@ private function registerEntityManager(): void
8184
return $app[Manager::class];
8285
});
8386
}
87+
88+
private function registerDatabaseSchema(): void
89+
{
90+
$this->app->singleton(SchemaInterface::class, function ($app): SchemaInterface {
91+
return $app[SchemaManagerContract::class]->create();
92+
});
93+
}
94+
95+
8496
}

src/Contracts/SchemaManager.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace WayOfDev\Cycle\Contracts;
6+
7+
use Cycle\ORM\Schema;
8+
9+
interface SchemaManager
10+
{
11+
public function create(): Schema;
12+
13+
public function flush(): void;
14+
}

0 commit comments

Comments
 (0)