API updadte
This commit is contained in:
120
migrations/Version20251109100000.php
Normal file
120
migrations/Version20251109100000.php
Normal file
@@ -0,0 +1,120 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DoctrineMigrations;
|
||||
|
||||
use Doctrine\DBAL\Schema\Schema;
|
||||
use Doctrine\Migrations\AbstractMigration;
|
||||
|
||||
/**
|
||||
* Initial migration: Creates all tables and populates reference data
|
||||
*/
|
||||
final class Version20251109100000 extends AbstractMigration
|
||||
{
|
||||
public function getDescription(): string
|
||||
{
|
||||
return 'Initial database schema with all tables and reference data';
|
||||
}
|
||||
|
||||
public function up(Schema $schema): void
|
||||
{
|
||||
// Create users table
|
||||
$this->addSql('CREATE TABLE users (
|
||||
id INT AUTO_INCREMENT NOT NULL,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
email VARCHAR(255) NOT NULL,
|
||||
role VARCHAR(255) NOT NULL,
|
||||
created_at DATETIME NOT NULL,
|
||||
api_key VARCHAR(64) NOT NULL,
|
||||
UNIQUE INDEX UNIQ_1483A5E9E7927C74 (email),
|
||||
UNIQUE INDEX UNIQ_1483A5E9C912ED9D (api_key),
|
||||
PRIMARY KEY (id)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB');
|
||||
|
||||
// Create bundeslaender table
|
||||
$this->addSql('CREATE TABLE bundeslaender (
|
||||
id INT AUTO_INCREMENT NOT NULL,
|
||||
name VARCHAR(100) NOT NULL,
|
||||
grunderwerbsteuer NUMERIC(4, 2) NOT NULL,
|
||||
UNIQUE INDEX UNIQ_DF7DFAB25E237E06 (name),
|
||||
PRIMARY KEY (id)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB');
|
||||
|
||||
// Create heizungstypen table
|
||||
$this->addSql('CREATE TABLE heizungstypen (
|
||||
id INT AUTO_INCREMENT NOT NULL,
|
||||
name VARCHAR(100) NOT NULL,
|
||||
UNIQUE INDEX UNIQ_6161C2A65E237E06 (name),
|
||||
PRIMARY KEY (id)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB');
|
||||
|
||||
// Create immobilien table
|
||||
$this->addSql('CREATE TABLE immobilien (
|
||||
id INT AUTO_INCREMENT NOT NULL,
|
||||
verwalter_id INT NOT NULL,
|
||||
heizungstyp_id INT DEFAULT NULL,
|
||||
bundesland_id INT DEFAULT NULL,
|
||||
adresse VARCHAR(255) NOT NULL,
|
||||
wohnflaeche INT NOT NULL,
|
||||
nutzflaeche INT NOT NULL,
|
||||
garage TINYINT(1) NOT NULL,
|
||||
zimmer INT NOT NULL,
|
||||
baujahr INT DEFAULT NULL,
|
||||
typ VARCHAR(255) NOT NULL,
|
||||
beschreibung LONGTEXT DEFAULT NULL,
|
||||
etage INT DEFAULT NULL,
|
||||
kaufpreis INT DEFAULT NULL,
|
||||
abschreibungszeit INT DEFAULT NULL,
|
||||
created_at DATETIME NOT NULL,
|
||||
updated_at DATETIME NOT NULL,
|
||||
INDEX IDX_2C789D3E5F66D3 (verwalter_id),
|
||||
INDEX IDX_2C789DC1B4DB52 (heizungstyp_id),
|
||||
INDEX IDX_2C789DB74FDBEB (bundesland_id),
|
||||
PRIMARY KEY (id)
|
||||
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB');
|
||||
|
||||
// Add foreign keys
|
||||
$this->addSql('ALTER TABLE immobilien ADD CONSTRAINT FK_2C789D3E5F66D3 FOREIGN KEY (verwalter_id) REFERENCES users (id)');
|
||||
$this->addSql('ALTER TABLE immobilien ADD CONSTRAINT FK_2C789DC1B4DB52 FOREIGN KEY (heizungstyp_id) REFERENCES heizungstypen (id)');
|
||||
$this->addSql('ALTER TABLE immobilien ADD CONSTRAINT FK_2C789DB74FDBEB FOREIGN KEY (bundesland_id) REFERENCES bundeslaender (id)');
|
||||
|
||||
// Populate Bundesländer with Grunderwerbsteuer rates
|
||||
$this->addSql("INSERT INTO bundeslaender (name, grunderwerbsteuer) VALUES
|
||||
('Baden-Württemberg', 5.00),
|
||||
('Bayern', 3.50),
|
||||
('Berlin', 6.00),
|
||||
('Brandenburg', 6.50),
|
||||
('Bremen', 5.00),
|
||||
('Hamburg', 5.50),
|
||||
('Hessen', 6.00),
|
||||
('Mecklenburg-Vorpommern', 6.00),
|
||||
('Niedersachsen', 5.00),
|
||||
('Nordrhein-Westfalen', 6.50),
|
||||
('Rheinland-Pfalz', 5.00),
|
||||
('Saarland', 6.50),
|
||||
('Sachsen', 5.50),
|
||||
('Sachsen-Anhalt', 5.00),
|
||||
('Schleswig-Holstein', 6.50),
|
||||
('Thüringen', 5.00)");
|
||||
|
||||
// Populate Heizungstypen
|
||||
$this->addSql("INSERT INTO heizungstypen (name) VALUES
|
||||
('Ölheizung'),
|
||||
('Gasheizung'),
|
||||
('Wärmepumpe'),
|
||||
('Pelletheizung')");
|
||||
}
|
||||
|
||||
public function down(Schema $schema): void
|
||||
{
|
||||
// Drop all tables
|
||||
$this->addSql('ALTER TABLE immobilien DROP FOREIGN KEY FK_2C789D3E5F66D3');
|
||||
$this->addSql('ALTER TABLE immobilien DROP FOREIGN KEY FK_2C789DC1B4DB52');
|
||||
$this->addSql('ALTER TABLE immobilien DROP FOREIGN KEY FK_2C789DB74FDBEB');
|
||||
$this->addSql('DROP TABLE immobilien');
|
||||
$this->addSql('DROP TABLE bundeslaender');
|
||||
$this->addSql('DROP TABLE heizungstypen');
|
||||
$this->addSql('DROP TABLE users');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user