slovocast/app/db/migrations/20240627230956_create_episodes_table.php

68 lines
2.2 KiB
PHP

<?php
declare(strict_types=1);
use Phinx\Migration\AbstractMigration;
/*
CREATE TABLE episodes (
id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
link VARCHAR(255) NOT NULL,
duration VARCHAR(127) NOT NULL COMMENT "HH:MM:SS representation",
length INT(11) UNSIGNED NOT NULL COMMENT "Length in seconds",
description TEXT NOT NULL,
explicit BOOLEAN NOT NULL DEFAULT true,
channel_id INT(11) UNSIGNED NOT NULL,
image_id INT(11) UNSIGNED NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY(`id`),
FOREIGN KEY(`channel_id`) REFERENCES channels(`id`),
FOREIGN KEY(`image_id`) REFERENCES images(`id`)
);
*/
final class CreateEpisodesTable extends AbstractMigration
{
/**
* Change Method.
*
* Write your reversible migrations using this method.
*
* More information on writing migrations is available here:
* https://book.cakephp.org/phinx/0/en/migrations.html#the-change-method
*
* Remember to call "create()" or "update()" and NOT "save()" when working
* with the Table class.
*/
public function change(): void
{
$table = $this->table('episodes')->addTimestamps();
$table->addColumn('title', 'string', [ 'null' => false ])
->addColumn('link', 'string')
->addColumn('duration', 'string')
->addColumn('length', 'integer', [ 'signed' => false ])
->addColumn('description', 'text')
->addColumn('explicit', 'boolean', [ 'default' => false ])
->addColumn('serial_number', 'integer', [ 'signed' => false ])
->addColumn('channel_id', 'integer', [
'signed' => false,
'null' => false
])
->addColumn('image_id', 'integer', [
'signed' => false,
'null' => true
])
->addForeignKey('channel_id', 'channels')
->addForeignKey('image_id', 'images');
$table->create();
}
}