summaryrefslogtreecommitdiff
path: root/vendor/doctrine/dbal/src/SQL/Builder/CreateSchemaObjectsSQLBuilder.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/doctrine/dbal/src/SQL/Builder/CreateSchemaObjectsSQLBuilder.php')
-rw-r--r--vendor/doctrine/dbal/src/SQL/Builder/CreateSchemaObjectsSQLBuilder.php73
1 files changed, 73 insertions, 0 deletions
diff --git a/vendor/doctrine/dbal/src/SQL/Builder/CreateSchemaObjectsSQLBuilder.php b/vendor/doctrine/dbal/src/SQL/Builder/CreateSchemaObjectsSQLBuilder.php
new file mode 100644
index 0000000..5f6a77a
--- /dev/null
+++ b/vendor/doctrine/dbal/src/SQL/Builder/CreateSchemaObjectsSQLBuilder.php
@@ -0,0 +1,73 @@
1<?php
2
3declare(strict_types=1);
4
5namespace Doctrine\DBAL\SQL\Builder;
6
7use Doctrine\DBAL\Platforms\AbstractPlatform;
8use Doctrine\DBAL\Schema\Schema;
9use Doctrine\DBAL\Schema\Sequence;
10use Doctrine\DBAL\Schema\Table;
11
12use function array_merge;
13
14final class CreateSchemaObjectsSQLBuilder
15{
16 public function __construct(private readonly AbstractPlatform $platform)
17 {
18 }
19
20 /** @return list<string> */
21 public function buildSQL(Schema $schema): array
22 {
23 return array_merge(
24 $this->buildNamespaceStatements($schema->getNamespaces()),
25 $this->buildSequenceStatements($schema->getSequences()),
26 $this->buildTableStatements($schema->getTables()),
27 );
28 }
29
30 /**
31 * @param list<string> $namespaces
32 *
33 * @return list<string>
34 */
35 private function buildNamespaceStatements(array $namespaces): array
36 {
37 $statements = [];
38
39 if ($this->platform->supportsSchemas()) {
40 foreach ($namespaces as $namespace) {
41 $statements[] = $this->platform->getCreateSchemaSQL($namespace);
42 }
43 }
44
45 return $statements;
46 }
47
48 /**
49 * @param list<Table> $tables
50 *
51 * @return list<string>
52 */
53 private function buildTableStatements(array $tables): array
54 {
55 return $this->platform->getCreateTablesSQL($tables);
56 }
57
58 /**
59 * @param list<Sequence> $sequences
60 *
61 * @return list<string>
62 */
63 private function buildSequenceStatements(array $sequences): array
64 {
65 $statements = [];
66
67 foreach ($sequences as $sequence) {
68 $statements[] = $this->platform->getCreateSequenceSQL($sequence);
69 }
70
71 return $statements;
72 }
73}