createTable('website'); $site->addColumn('id', 'string', ['length' => 64]); $site->addColumn('name', 'string', ['length' => 200]); $site->addColumn('default_locale', 'string', ['length' => 12]); $site->addColumn('theme', 'json'); $site->setPrimaryKey(['id']); $page = $schema->createTable('page'); $page->addColumn('id', 'string', ['length' => 64]); $page->addColumn('website_id', 'string', ['length' => 64]); $page->addColumn('slug', 'string', ['length' => 160]); $page->addColumn('locale', 'string', ['length' => 12]); $page->addColumn('draft_revision_id', 'string', ['length' => 64, 'notnull' => false]); $page->addColumn('published_revision_id', 'string', ['length' => 64, 'notnull' => false]); $page->addColumn('version', 'integer', ['default' => 0]); $page->setPrimaryKey(['id']); $page->addUniqueIndex(['website_id', 'locale', 'slug']); $page->addForeignKeyConstraint('website', ['website_id'], ['id']); $revision = $schema->createTable('revision'); $revision->addColumn('id', 'string', ['length' => 64]); $revision->addColumn('page_id', 'string', ['length' => 64]); $revision->addColumn('document', 'json'); $revision->addColumn('created_at', 'datetime_immutable'); $revision->setPrimaryKey(['id']); $revision->addForeignKeyConstraint('page', ['page_id'], ['id']); } public function down(Schema $schema): void { $this->throwIrreversibleMigrationException('Contains customer content. Restore a verified database backup and matching code.'); } }