Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
namespace Doctrine\DBAL\SQL\Builder;
4
 
5
use Doctrine\DBAL\Exception;
6
use Doctrine\DBAL\Platforms\AbstractPlatform;
7
use Doctrine\DBAL\Schema\Schema;
8
use Doctrine\DBAL\Schema\Sequence;
9
use Doctrine\DBAL\Schema\Table;
10
 
11
use function array_merge;
12
 
13
final class DropSchemaObjectsSQLBuilder
14
{
15
    private AbstractPlatform $platform;
16
 
17
    public function __construct(AbstractPlatform $platform)
18
    {
19
        $this->platform = $platform;
20
    }
21
 
22
    /**
23
     * @return list<string>
24
     *
25
     * @throws Exception
26
     */
27
    public function buildSQL(Schema $schema): array
28
    {
29
        return array_merge(
30
            $this->buildSequenceStatements($schema->getSequences()),
31
            $this->buildTableStatements($schema->getTables()),
32
        );
33
    }
34
 
35
    /**
36
     * @param list<Table> $tables
37
     *
38
     * @return list<string>
39
     */
40
    private function buildTableStatements(array $tables): array
41
    {
42
        return $this->platform->getDropTablesSQL($tables);
43
    }
44
 
45
    /**
46
     * @param list<Sequence> $sequences
47
     *
48
     * @return list<string>
49
     *
50
     * @throws Exception
51
     */
52
    private function buildSequenceStatements(array $sequences): array
53
    {
54
        $statements = [];
55
 
56
        foreach ($sequences as $sequence) {
57
            $statements[] = $this->platform->getDropSequenceSQL($sequence);
58
        }
59
 
60
        return $statements;
61
    }
62
}