<?php
declare(strict_types=1);

use Migrations\BaseMigration;

class CreateLandingContentTables extends BaseMigration
{
    public function change(): void
    {
        $programs = $this->table('programs');
        $programs
            ->addColumn('slug', 'string', ['limit' => 40, 'null' => false])
            ->addColumn('label', 'string', ['limit' => 60, 'null' => false])
            ->addColumn('headline', 'string', ['limit' => 200, 'null' => false])
            ->addColumn('body', 'text', ['null' => false])
            ->addColumn('bullets', 'text', ['null' => false, 'comment' => 'newline-delimited bullet points'])
            ->addColumn('tone', 'string', ['limit' => 20, 'default' => 'clay', 'null' => false])
            ->addColumn('image_path', 'string', ['limit' => 255, 'null' => true])
            ->addColumn('vessel_type', 'string', ['limit' => 20, 'default' => 'pot', 'null' => false])
            ->addColumn('sort_order', 'integer', ['default' => 0, 'null' => false])
            ->addColumn('created', 'datetime', ['null' => false])
            ->addColumn('modified', 'datetime', ['null' => false])
            ->addIndex(['slug'], ['unique' => true])
            ->create();

        $testimonials = $this->table('testimonials');
        $testimonials
            ->addColumn('quote', 'text', ['null' => false])
            ->addColumn('attribution', 'string', ['limit' => 160, 'null' => false])
            ->addColumn('sort_order', 'integer', ['default' => 0, 'null' => false])
            ->addColumn('created', 'datetime', ['null' => false])
            ->addColumn('modified', 'datetime', ['null' => false])
            ->create();

        $stats = $this->table('landing_stats');
        $stats
            ->addColumn('label', 'string', ['limit' => 80, 'null' => false])
            ->addColumn('value', 'integer', ['null' => false])
            ->addColumn('suffix', 'string', ['limit' => 10, 'null' => true])
            ->addColumn('tone', 'string', ['limit' => 20, 'default' => 'ink', 'null' => false])
            ->addColumn('sort_order', 'integer', ['default' => 0, 'null' => false])
            ->addColumn('created', 'datetime', ['null' => false])
            ->addColumn('modified', 'datetime', ['null' => false])
            ->create();
    }
}
